LeetCode 第3題:給定一個字串,找出不含有重複字元的最長子串的長度。
阿新 • • 發佈:2019-02-02
public class LeetCode3 { public static void main(String[] args) { /** * LeetCode第3題: * 給定一個字串,找出不含有重複字元的最長子串的長度。 * 示例:給定 "abcabcbb" ,沒有重複字元的最長子串是 "abc" ,那麼長度就是3。 * 解題思路:建立指標i,j,i=0,j=i+1;最大字元長度為max * if str[i-(j-1)]的區間中存在 = str[j] , i++;j=i+1;break; * else j++; * 執行時間 n的2次方 */ String s = "pwwkew"; System.out.println(lengthOfLongestSubstring(s)); } public static int lengthOfLongestSubstring(String s) { if(s.length() == 1) return 1; if(s.length() == 0) return 0; char str[] = s.toCharArray(); int i = 0,j = i+1,max = 0; boolean t = true; while(i < s.length() - 1){ int length = 1; //檢測是否重複 if(j == s.length()) break; for(int k = i; k < j;k++){ if(str[j] != str[k] ){ length++; }else{ t = false; break; } } if(length > max){ max = length; } //如果檢測成功,j指標右移一次 if(t) j++; //檢測失敗,i指標右移一次,j指標回到i+1的位置 else{ t = true; i++; j = i + 1; length = 1; } } return max; } }