//给定一个字符串,找出其中的最长不重复子串
public class LongestSubstring {
public int longestSubSubstring(String s){
//设计思路:滑动窗口+指针。 滑动窗口保存不重复子串,指针依次向后移动。
int longestLength = 0;
if(s.isEmpty()){
return longestLength;
}
StringBuilder slidingWindow = new StringBuilder();
int p;
for (int i = 0; i < s.length(); i++) {
if (slidingWindow.indexOf(String.valueOf(s.charAt(i))) == -1) {
slidingWindow.append(s.charAt(i));
}else {
if((p = slidingWindow.length()) > longestLength){
longestLength = p;
}
slidingWindow.delete(0,slidingWindow.indexOf(String.valueOf(s.charAt(i))) + 1);
//清空后再存入当前字符串
slidingWindow.append(s.charAt(i));
}
}
//遍历完以后再次计算长度
if((p = slidingWindow.length()) > longestLength){
longestLength = p;
}
return longestLength;
}
}
算法:最长不重复子串
最新推荐文章于 2021-07-25 10:40:23 发布