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

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

每天一題LeetCode[第三天]

2019-11-10 23:29:27
字體:
來源:轉載
供稿:網友

每天一題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; }

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 区。| 会泽县| 屏山县| 安图县| 施秉县| 泌阳县| 乌兰察布市| 岢岚县| 黄平县| 琼中| 长汀县| 昌乐县| 图木舒克市| 潼南县| 苗栗市| 克拉玛依市| 讷河市| 南和县| 延川县| 永春县| 玉树县| 新郑市| 闽侯县| 营山县| 吉林市| 玉屏| 横峰县| 耒阳市| 花垣县| 桂东县| 肇东市| 双鸭山市| 湘乡市| 葫芦岛市| 伽师县| 黎川县| 济阳县| 荆州市| 永靖县| 麻阳| 南和县|