03.Longest Substring Without Repeating Characters

來源:互聯網
上載者:User

標籤:star   ext   style   ++   nbsp   long   ann   cab   public   

Longest Substring Without Repeating Characters(最長的子串不重複字元)

題目要求:給定一個字串,找到最長的子字串的長度,要求不重複字元。

例如:

  給定一個字串“abcabcbb”,答案是“abc”,長度是3。

  給定一個字串“bbbbb”,答案是“b”,長度是1。

  給定一個字串“pwwkew”,答案是“wke”,長度是3。

  注意:答案必須是一個子字串,“pwke”是一個子序列,而不是一個子字串。

解法一:

  思路:基本思想為建立一個散列表來儲存字串中的字元。以字元為鍵,字元所處位置為值。設定兩個值start,end來掃描字串,同時更新散列表。如果該字元已經存在於散列表中,則更新start值,將start值賦值為最後找到的同一個字元的右側。

 1 public class LongestSubstringWithoutRepeatingCharacters { 2      3     public static void main(String[] args) { 4         Scanner scanner = new Scanner(System.in); 5         String string = scanner.nextLine(); 6         System.out.println("最長不重複子串的長度為:" + lengthOfLogestSubstring(string)); 7     } 8  9     10     public static int lengthOfLogestSubstring(String s) {11         int max = 0;12         Map<Character, Integer> map = new HashMap<>();13         for (int start = 0,end = 0; end < s.length(); end++) {14             if (map.containsKey(s.charAt(end))) {15                 start = Math.max(start, map.get(s.charAt(end))+1);16             }17             map.put(s.charAt(end), end);18             max = Math.max(max, end-start+1);19         }20         return max;21     }22 }

 

 

 

03.Longest Substring Without Repeating Characters

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.