java字串的最長不重複子串,
阿新 • • 發佈:2019-02-12
程式碼如下圖所示,時間複雜度為O(n),不僅獲得最長的子串長度,並輸出了子串。
public static void longestSubstring(String s) { int ret = 0; int m[]=new int[256]; for(int i=0;i<256;i++) m[i]=-1; int start = 0; int finalstart=0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (m[c] >= start) { start = m[c] + 1; m[c] = i; } else { m[c] = i; if(i-start+1>ret) { ret=i-start+1; finalstart=start; } } } for(int i=finalstart;i<finalstart+ret;i++) System.out.print(s.charAt(i)); System.out.println(ret); }
結果