执行用时 : 27 ms, 在Longest Substring Without Repeating Characters的Java提交中击败了89.20% 的用户
内存消耗 : 37.5 MB, 在Longest Substring Without Repeating Characters的Java提交中击败了92.25% 的用户
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例:
输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
public class MaxString {
public static void main(String[] args) {
String s = "bbbb";
System.out.println(calcuateMax(s));
}
public static int calcuateMax(String s) {
if (s == null || s.length() == 0) {
return 0;
}
String s2 = "";
int max = 0;
for (int i = 0; i < s.length(); i++) {
if (s2.contains(s.substring(i, i + 1))) {
// 如果s2中含有重复的,则此时记录值
if (s2.length() > max) {
max = s2.length();
}
s2 += s.substring(i, i + 1);
int index = s2.indexOf(s.substring(i, i + 1));
s2 = s2.substring(index + 1);
} else {
// 无重复继续添加
s2 += s.substring(i, i + 1);
}
}
return s2.length() > max ? s2.length() : max;
}
}