問題描述:
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
方案一:
建立乙個陣列,將查過的字元記錄在該陣列中,用start記錄無重複字元字串的起始位置,因為i記錄的是第乙個不符合重複的字元的位置,此時的無重複字元的字串長度為i - start;然後修改start的位置和無重複字元的字串的最大長度,並清除start之前在陣列中記錄的記錄數,然後繼續查詢字串。最後返回結果是因為從start位置到結束都沒有重複的字元的情況,需要和之前的最大長度進行比較。
public int lengthoflongestsubstring(string s)
map[s.charat(i++)]++;
}return i - start > maxlen ? i - start: maxlen;
}
方案二:
建立乙個資料,將陣列的資料都賦值為-1,然後查詢字串,將查詢後的字元所在字串的位置j記錄在所建的陣列中,用i來記錄無重複字元的字串的初始位置,當之前遇到已經在陣列中賦值的字元的時候,更新初始字串的位置i + 1和最大的無重複字元的字串長度。
public int lengthoflongestsubstring(string s)
int i, j, max;
i = j = max = 0;
while(j < s.length())
seen[c] = j;
j++;
max = math.max(max, j-i);
}return max;
}
3 無重複字元的最長子串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。思路 用 i...
3 無重複字元的最長子串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 無重複字元的最長子串是 abc 其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 無重複字元的最長子串是 b 其長度為 1。示例 3 輸入 pwwkew 輸出 3 解釋 無重複字元的最長子串是...
3 無重複字元的最長子串
給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3解釋 因為...