給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。
示例 1:
輸入:"abcabcbb"輸出:3解釋:因為無重複字元的最長子串是"abc",所以其
長度為 3。
示例 2:
輸入:"bbbbb"輸出:1解釋:因為無重複字元的最長子串是"b"
,所以其長度為 1。
示例 3:
輸入:"pwwkew"輸出:3解釋:因為無重複字元的最長子串是解法一:時間複雜度很高, 需要兩層for迴圈加字元判斷"wke"
,所以其長度為 3。請注意,你的答案必須是子串的長度,
"pwke"
是乙個子串行,不是子串。
class solution }}
return resultlength;
}public boolean judgeresult(string s, int begin, int end)else
}return true;
}}
解法二:動態規劃
維護乙個陣列dp,dp[i]表示到以第i個字元結尾的不包含重複陣列的子字串的最大長度。
(我們並不儲存最大不重複子字串,只是儲存其長度方便後續比較)
狀態轉移:
1. 第i個字元從未出現過,則dp[i] = dp[i-1] + 1;
2. 第i個字元出現過, 這時我們找出第i個字元最近一次出現的位置index,記兩個的距離為d= i-index:
1) d<=dp[i-1],即這個字元出現在以第i-1個字元結尾的不包含重複陣列的子字串中,則dp[i] = d;
2) d>dp[i-1], 即這個字元沒有出現在以第i-1個字元結尾的不包含重複陣列的子字串中,則dp[i] = dp[i-1] + 1 。
class solution
int dp = new int[n];
dp[0] = 1;
int res = 1;
for (int i = 1; i < n; i++) else
} else
res = math.max(res, dp[i]);
}return res;
}}
leetcode無重複字串
無重複字串 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew...
leetcode3 無重複字元最長字串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 無重複字元的最長子串是 abc 其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 無重複字元的最長子串是 b 其長度為 1。示例 3 輸入 pwwkew 輸出 3 解釋 無重複字元的最長子串是...
leetcode 3 最長無重複字串
3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...