思路
双指针,用left和right表示以right为右边界的连续子字符串,left表示其左边界
解题过程
right从0到s.length()-1遍历:1.如果当前字符减去前一个字符的值为1,则当前字符与前面的字符是连续的,此时left不变,right++;2.如果当前字符减去前一个字符的值为1,则当前字符与前面的字符是不连续的,此时left=right,right++。在遍历过程中维持一个ans变量表示最大长度,遍历结束后最后返回ans即可
Code
class Solution {
public int longestContinuousSubstring(String s) {
int ans=1;
for(int i=0,j=1;j<s.length();j++){
if(s.charAt(j)-s.charAt(j-1)==1) {
ans=Math.max(ans,j-i+1);
}else{
i=j;
}
}
return ans;
}
}
作者:菜卷
链接:https://leetcode.cn/problems/length-of-the-longest-alphabetical-continuous-substring/solutions/2923370/zui-chang-de-zi-mu-xu-lian-xu-zi-zi-fu-c-ymuq/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文链接: https://blog.csdn.net/qq_53568730/article/details/142376020