Given a string, find the length of the?longest substring?without repeating characters.
Examples:
Given?"abcabcbb", the answer is?"abc", which the length is 3.
Given?"bbbbb", the answer is?"b", with the length of 1.
Given?"pwwkew", the answer is?"wke", with the length of 3. Note that the answer must be a?substring,?"pwke"?is a?subsequence?and not a substring.
思路是:
1.需要兩個指針第一個從頭開始for循環(huán)一直到string結(jié)束填物,第二個用于找最長substring寞射,?
2.需要一個數(shù)組 用途是做一個映射 利用ascii碼表中char的數(shù)字映射在數(shù)組中的位置存放0或者1兩個數(shù)字表示是否已經(jīng)存在。
3.需要一個整數(shù)值存放最長字符串的長度喻括,也就是最終答案火惊。
class Solution {
? ? public int lengthOfLongestSubstring(String s) {
? ? ? ? int i = 0, j = 0, ans = 0;
? ? ? ? int[] myMap = new int[128];
? ? ? ? for(i = 0; i < s.length(); i++){
? ? ? ? ? ? while(j < s.length() && myMap[s.charAt(j)] == 0){
? ? ? ? ? ? ? ? myMap[s.charAt(j)] = 1;
? ? ? ? ? ? ? ? ans = Math.max(ans, j-i+1);
? ? ? ? ? ? ? ? j++;
? ? ? ? ? ? }
? ? ? ? ? ? myMap[s.charAt(i)] = 0;
? ? ? ? }
? ? ? ? return ans;
? ? }
}