题目大意:
连续字符
给你一个字符串 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
解题思路分析:
- 定义两个变量:length(当前连续字符长度),maxLength(全局最长连续字符长度)。两个变量的初始值都为1。
- 从字符串第二位开始向后循环,如果当前字符等于前一个字符,length加一。否则将length重置为1(长度为当前字符本身)。每一次循环后,使用length更新全局最大长度maxLength。
- 循环结束后,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-解题思路分析/