題目:
給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。
示例 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。