91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java如何求無重復字符的最長子串

發布時間:2021-09-22 09:23:33 來源:億速云 閱讀:312 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關java如何求無重復字符的最長子串,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

無重復字符的最長子串

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

提示:

0 <= s.length <= 5 * 104 s 由英文字母、數字、符號和空格組成

力扣鏈接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters

示例 1:

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

示例 2:

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

示例 3:

輸入: s = "" 輸出: 0

/*
		String s = "abcabcffhbb"; 
		//string   a b c a b c f f h b b 
		//map      0 1 2 3 4 5 6 7 8 9 10 map記錄字符最后一次出現的位置,(a,0)->(a,3)
		//[ ]      1 2 3 3 3 3 4 1 2 3 1  記錄s.toCharArray()數組對應字符的最大子串長度
*/

class Solution {
    public int lengthOfLongestSubstring(String s) {
        if(s.length() == 0){
            return 0;
        }
        char[] arr = s.toCharArray();
        int len = s.length();
		// 記錄字符最后一次出現的位置
		Map<Character, Integer> map_index = new HashMap<Character, Integer>();
		// 記錄s.toCharArray()數組對應字符的最大子串長度
		int[] distance = new int[len];
		map_index.put(arr[0],0);
		distance[0] = 1;
        int max = 1;
		int index;
		for(int i=1;i<len;i++) {
             // 如果map_index中已經記錄了該字符
			if (map_index.containsKey(arr[i])) {
                  // 得到該字符上次出現的下標
				index = map_index.get(arr[i]);
                  // 前一個字符的最長子串+1 與 相同字符的距離進行比較,選擇較小值(才沒有重復的字符)。
				distance[i] = (distance[i-1]+1) < (i - index)?(distance[i] = distance[i-1]+1):(i-index);
			}else {
                  // 前面沒有出現該字符直接+1即可
				distance[i] = distance[i-1] +1;
			}
            max = Math.max(max,distance[i]);
			map_index.put(arr[i], i);
		}
		return max;
    }
}

使用了數組記錄字符串中每個字符對應的最大子串長度,map則是記錄某個字符最后一次出現的位置。用前一個字符+1與相同字符的距離進行比較,求出不重復的子串長度。

關于“java如何求無重復字符的最長子串”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临颍县| 洛浦县| 石柱| 龙岩市| 甘南县| 诸城市| 定南县| 河津市| 洛浦县| 惠州市| 同仁县| 闽清县| 永年县| 东山县| 秭归县| 穆棱市| 安溪县| 夏津县| 桂东县| 周至县| 额敏县| 内黄县| 开平市| 从江县| 大连市| 防城港市| 罗田县| 河津市| 徐水县| 密云县| 罗平县| 衡阳县| 阜新市| 佛冈县| 乾安县| 张掖市| 新田县| 保定市| 常德市| 旬阳县| 土默特右旗|