Task16——無重複字符的最長子串

題目:

給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。

示例 1:

輸入: "abcabcbb"
輸出: 3
解釋: 因爲無重複字符的最長子串是 "abc",所以其長度爲 3。

示例 2:

輸入: "bbbbb"
輸出: 1
解釋: 因爲無重複字符的最長子串是 "b",所以其長度爲 1。

示例 3:

輸入: "pwwkew"
輸出: 3
解釋: 因爲無重複字符的最長子串是 "wke",所以其長度爲 3。
     請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。

解題:

int lengthOfLongestSubstring(char * s){
    if(s[0] == '\0') return 0;
    int i = 0;
    int s1 = 0;
    int ret = 0;
    int dlt = 0;
    while(s[i]!='\0')
    {
        for (int j = s1; j < i; ++j)
        {
            if (s[j] == s[i])
            {
                s1 = j + 1;
            }
        }
        dlt = i - s1;
        if (dlt > ret)
        {
            ret = dlt;
        }
        ++i;
    }
    return ret + 1;
}
public class Solution {
    public int LengthOfLongestSubstring(string s) {
            int ret = 0;
            if (string.IsNullOrEmpty(s)) return ret;

            int s1 = 0;
            for (int i = 0; i < s.Length; i++)
            {
                for (int j = s1; j < i; j++)
                {
                    if (s[j] == s[i])
                    {
                        s1 = j + 1;
                    }
                }
                int dlt = i - s1;
                if (dlt > ret)
                {
                    ret = dlt;
                }
            }
            return ret + 1;
    }
}

結果:

可以發現,C語言的執行效率是C#的1/10,使用存儲空間是1/5。

來源:

力扣(LeetCode)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章