📅  最后修改于: 2023-12-03 15:12:37.022000             🧑  作者: Mango
给定一个由小写字母组成的字符串 s
,你需要将其分割成尽量多的子串,使得每个子串中的所有字符都相同。
返回每个子串的长度的最大值。
输入: "ababcbacaqpgamilscxhdfiryxvkxewxewdkfetpszxnbqwyrqqegghh"
输出: 10
解释: 字符串的一个可能的分割方式是 "ababcbacaq"、"pg"、"a"、"mils"、"cxhdfiryxv"、"kxewxewdkfetpszxnbq"、"wyrqqegghh"。
每个子串的长度都为 1,且这些子串组成的数组和最大值为 10。
遍历字符串s,维护当前子串的起始位置start和结束位置end。当s[i]与s[end]不相等时,说明需要分割一个子串,计算当前子串的长度,更新end和start。最终返回最大的子串长度。
class Solution:
def maxSameCharString(self, s: str) -> int:
max_len = start = end = 0
for i in range(len(s)):
if s[i] == s[end]:
end += 1
else:
max_len = max(max_len, end - start)
start = end = i
return max(max_len, end - start)
class Solution {
public:
int maxSameCharString(string s) {
int max_len = 0;
int start = 0, end = 0;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == s[end]) {
++end;
} else {
max_len = max(max_len, end - start);
start = end = i;
}
}
return max(max_len, end - start);
}
};