question:
給定乙個字串,找出不含有重複字元的最長子串的長度。
ex:
給定"abcabcbb"
,沒有重複字元的最長子串是"abc"
,那麼長度就是3。
給定"bbbbb"
,最長的子串就是"b"
,長度是1。
給定"pwwkew"
,最長子串是"wke"
,長度是3。請注意答案必須是乙個子串,"pwke"
是 子串行 而不是子串。
solution:對字串中的每個字元進行遍歷,得到每個字元的最長不重複子串,比較,獲得整個字串的最長無重複子串。
public class string_length
//定義allunique()使用集合將遍歷得到的字元放入set中,當重複時,返回false
public static boolean allunique(string s, int start, int end)
return true;
} //主方法
public static void main(string args)
}
solution2:滑動視窗,完成對字元是否在當前的子字串中的檢查。使用 hashset 將字元儲存在當前視窗 [i,j)[i, j)[i,j)(最初 j=ij = ij=i)中。 然後我們向右側滑動索引 jjj,如果它不在 hashset 中,我們會繼續滑動 jjj。直到 s[j] 已經存在於 hashset 中。此時,我們找到的沒有重複字元的最長子字串將會以索引 iii 開頭。如果我們對所有的 iii 這樣做,就可以得到答案。
public static int lengthoflongestsubstring(string s)
else
}system.out.println(ans);
return ans;
}
優化的滑動視窗:
public int lengthoflongestsubstring(string s)
ans = math.max(ans, j - i + 1);
map.put(s.charat(j), j + 1);
}return ans;
}
2019-09-23增加獲取最長字元方法:
/**
* @description 獲取最長字元
* @author lin
* @date 2023年9月23日
* @param str
*/public static void getmaxstring(string str)
list.add(a);
length = math.max(length, list.size());
if(maxlist.size()<=list.size())
}} system.out.println("=strlist===" + strlist.tostring());
system.out.println("=maxlist===" + maxlist.tostring());
system.out.println("=length===" + length);
}
求字串中包含唯一字元的最長子串
給你乙個字串,找到只包含唯一字元的最長子串。given a string,find the longest sub sequence which contains only unique characters.維護兩個指標,左指標和右指標。同時用乙個hash表儲存左右指標之間的字元以及字元出現的位置...
無重複字串的最長子串
題目描述 給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。解題思路 在解題之前我們先要知道如何輸入乙個字串,又不會浪費空...
3 無重複字串的最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...