题目:
无重复字符的最大长串。
答案:
1、解法(一),这是我自己写的,虽运行通过,但是算法效率太低,仅供参考。
class Solution {
public int lengthOfLongestSubstring(String s) {
int start = 0, length = 0, count = 0, flag;
char charIndex;
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for(int i = 0; i < s.length(); i++){
charIndex = s.charAt(i);
// 代表新新字符串
if(map.containsKey(charIndex) && map.get(charIndex) >= start){
// 旧字符串长度大于已知最长长度
if(i - start > length){
length = i - start;
}
// 起始编号加一
start = map.get(charIndex) + 1;
// 新字符串长度
count = i - start;
}
map.put(charIndex, i);
count++;
}
if(count > length){
return count;
}
return length;
}
}
2、解法(二):昨天发现我的解法效率太低,故查询了其它解法,发现效率更高,想法也非常好。