国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

每天一題LeetCode[第三天]

2019-11-11 01:16:47
字體:
來源:轉載
供稿:網友

每天一題LeetCode[第三天]


Longest Substring Without Repeating Characters

Description:
Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "b", with the length of 1.Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.Subscribe to see which companies asked this question

解題過程:

這一題題意比較簡單,能馬上明白意思,由于做過第一天的題目,所以馬上想到了利用map的數據結構特性,把下標和字符結合起來,并利用map的唯一性的特點,進行數據的保存。

一開始思路雖然對了,跟top solution一樣,但是提交了很多次都沒過,因為還有很多小細節處理有問題。比如對max的更新一開始放到了 containkey中,后來發現不行,因為如果都沒有重復的字符串,max就為0。然后換了思路,每次循環都更新max,記錄第一個重復的字符的下標。但是在得到的方式有問題,如果只是單純的賦值是有問題的,因為map上一次數據除了重復的處理了,其他數據依舊保存的,所以要進行max處理,取最大值,并且firstIndex這個值英國是取自身和重復字符下標值+1兩者的最大值。


java代碼:

public static int lengthOfLongestSubstring(String s){ if(null==s || s.length()==0){ return 0; } HashMap<Character,Integer> pair=new HashMap<>(); int max=0,tmpLength,firstIndex=0; for(int i=0;i<s.length();i++){ char c=s.charAt(i); //如果已經存在了,則取value(即其對應的下標) if(pair.containsKey(c)){ //防止因為map舊數據沒有更新,導致長度錯誤 firstIndex=Math.max(firstIndex,pair.get(c)+1); } pair.put(c,i); max=Math.max(max,i-firstIndex+1); } return max; }

提高代碼質量就是:積累精美的思路,優質的細節的過程。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泽库县| 交口县| 齐河县| 当雄县| 徐州市| 南通市| 晋城| 苗栗市| 若尔盖县| 高唐县| 嘉禾县| 凤城市| 宣汉县| 丹寨县| 什邡市| 乐山市| 驻马店市| 金川县| 肃宁县| 永登县| 泸溪县| 榆树市| 西贡区| 兰考县| 玉门市| 建德市| 获嘉县| 桐柏县| 景泰县| 张家港市| 晋州市| 黄骅市| 左权县| 隆安县| 建始县| 南乐县| 武定县| 图片| 锡林浩特市| 沙湾县| 雅江县|