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

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

每天一題LeetCode[第三天]

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

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锦州市| 清徐县| 富川| 陈巴尔虎旗| 泽库县| 廉江市| 平南县| 红河县| 宽城| 寻甸| 雅安市| 胶州市| 德化县| 乐都县| 潢川县| 井陉县| 桃江县| 徐汇区| 高要市| 枣强县| 亳州市| 元江| 喀什市| 合肥市| 咸丰县| 新田县| 武义县| 涿州市| 黄大仙区| 卓尼县| 陈巴尔虎旗| 黄梅县| 富裕县| 四会市| 左贡县| 万全县| 九龙城区| 平凉市| 平凉市| 河间市| 凤庆县|