X

LEETCODE 1446. Consecutive Characters 解题思路分析

题目大意:

连续字符

给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。

请你返回字符串的能量。

示例 1:

输入:s = "leetcode"
输出:2
解释:子字符串 "ee" 长度为 2 ,只包含字符 'e' 。

示例 2:

输入:s = "abbcccddddeeeeedcba"
输出:5
解释:子字符串 "eeeee" 长度为 5 ,只包含字符 'e' 。

示例 3:

输入:s = "triplepillooooow"
输出:5

示例 4:

输入:s = "hooraaaaaaaaaaay"
输出:11

示例 5:

输入:s = "tourist"
输出:1

提示:

  • 1 <= s.length <= 500
  • s 只包含小写英文字母。

如果想查看本题目是哪家公司的面试题,请参考以下免费链接: https://leetcode.jp/problemdetail.php?id=1446

解题思路分析:

  1. 定义两个变量:length(当前连续字符长度),maxLength(全局最长连续字符长度)。两个变量的初始值都为1。
  2. 从字符串第二位开始向后循环,如果当前字符等于前一个字符,length加一。否则将length重置为1(长度为当前字符本身)。每一次循环后,使用length更新全局最大长度maxLength。
  3. 循环结束后,maxLength即是返回结果。

实现代码:

public int maxPower(String s) {
    int length=1;
    int maxLength=1;
    char[] arr=s.toCharArray();
    for(int i=1;i<s.length();i++){
        if(arr[i]==arr[i-1]){
            length++;
            maxLength=Math.max(length,maxLength);
        }else length=1;
    }
    return maxLength;
}

本题解法执行时间为3ms。

Runtime: 3 ms, faster than 61.40% of Java online submissions for Consecutive Characters.

Memory Usage: 39.6 MB, less than 100.00% of Java online submissions for Consecutive Characters.

本网站文章均为原创内容,并可随意转载,但请标明本文链接
如有任何疑问可在文章底部留言。为了防止恶意评论,本博客现已开启留言审核功能。但是博主会在后台第一时间看到您的留言,并会在第一时间对您的留言进行回复!欢迎交流!
本文链接: http://leetcode.jp/leetcode-1446-consecutive-characters-解题思路分析/
Categories: leetcode
kwantong: