LeetCode最長無重複字串

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"
Output: 3
Explanation: The answer is “abc”, with the length of 3.
Example 2:

Input: “bbbbb”
Output: 1

Explanation: The answer is “b”, with the length of 1.
Example 3:

Input: “pwwkew”
Output: 3

Explanation: 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.

大意是,給定一個字符串,要求最長無重複字串的長度,例如aabbccd最長無重複子串上cd,abcaaa是abc,注意,子串一定要是連續的。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        if(s.length() == 0) return 0;
    	int temp = 0;
    	int *dp = new int[s.length()];
        dp[0] = 1;
        int max = 1;
    	int st = 0;
        for (int i = 1; i < s.length(); i++) {
        	if(s[i] == s[i-1]){
        		dp[i] = 1;
        		st = i;
			} 
        	else {
        		int flag = 0;
        		for (int j = st; j < i; j++) {
        			if (s[j] == s[i]) {
        				flag = 1;
        				dp[i] = i-j;
        				st = j+1;
        				break;
					}
				}
				if (flag == 0) {
					dp[i] = dp[i-1]+1;
				}
			}
			if(max < dp[i]) max = dp[i];	
		}
		return max;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章