给定一个由字符'a'和字符'b'组成的字符串,可以删除若干字符,使得剩下来的字符串满足前后段为a,中间段为b(aaa....aaabbbb.....bbbbaaa.....aaa),区段可以没有字符(ba,ab,b,aa都是合法的),求最长剩下字符串的长度。java代码
时间: 2024-05-02 18:18:59 浏览: 128
字符串长度的判断 JAVA
5星 · 资源好评率100%
我可以回答这个问题。以下是Java代码示例:
```java
public static int findLongestSubstring(String str) {
int maxLen = 0;
int len = 0;
boolean isMiddle = false;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == 'a') {
if (isMiddle) {
maxLen = Math.max(maxLen, len);
}
len = 1;
isMiddle = false;
} else if (str.charAt(i) == 'b') {
if (isMiddle) {
len++;
} else {
isMiddle = true;
len++;
}
}
}
if (isMiddle) {
maxLen = Math.max(maxLen, len);
}
return maxLen;
}
```
该方法接受一个由字符'a'和字符'b'组成的字符串作为参数,并返回最长满足前后段为a,中间段为b的子串长度。方法中使用了一个变量isMiddle来标记当前字符是否处于中间段,使用一个变量len来记录当前中间段的长度。当遇到字符'a'时,如果isMiddle为true,则更新最长子串长度maxLen,并重置len为1;如果isMiddle为false,则只重置len为1。当遇到字符'b'时,如果isMiddle为true,则更新len;如果isMiddle为false,则将isMiddle设置为true,并更新len为1。最后,如果isMiddle仍为true,则更新最长子串长度maxLen。
阅读全文