日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【LeetCode】3月16日打卡-Day1

發布時間:2024/7/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【LeetCode】3月16日打卡-Day1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題1 字符串壓縮

描述

字符串壓縮。利用字符重復出現的次數,編寫一種方法,實現基本的字符串壓縮功能。比如,字符串aabcccccaaa會變為a2b1c5a3。若“壓縮”后的字符串沒有變短,則返回原先的字符串。你可以假設字符串中只包含大小寫英文字母(a至z)。
示例1:
輸入:“aabcccccaaa”
輸出:“a2b1c5a3”
示例2:
輸入:“abbccd”
輸出:“abbccd”
解釋:“abbccd"壓縮后為"a1b2c2d1”,比原字符串長度更長。

實現

class Solution {public String compressString(String S) {if(S.length() == 0){return "";}StringBuilder sb = new StringBuilder();char[] chars = S.toCharArray();int index = 0;int count = 0;for(int i = 0; i < S.length()-1; i++){count++;if(chars[i] != chars[i+1]){sb.append(chars[i]).append(count);index = i + 1;count = 0;}} sb.append(chars[index]).append(chars.length - index);String result = sb.toString();return result.length() < S.length() ? result : S;} }

筆記

  • StringBuilder
    在程序開發過程中,我們常常碰到字符串連接的情況,方便和直接的方式是通過"+"符號來實現,但是這種方式達到目的的效率比較低,且每執行一次都會創建一個String對象,即耗時,又浪費空間。使用StringBuilder類就可以避免這種問題的發生。
  • 1、append(String str)/append(Char c):字符串連接 System.out.println("StringBuilder:"+strB.append("ch").append("111").append('c')); //return "StringBuilder:ch111c"2、toString():返回一個與構建起或緩沖器內容相同的字符串 System.out.println("String:"+strB.toString()); //return "String:ch111c"3、appendcodePoint(int cp):追加一個代碼點,并將其轉換為一個或兩個代碼單元并返回this System.out.println("StringBuilder.appendCodePoint:"+strB.appendCodePoint(2)); //return "StringBuilder.appendCodePoint:ch111c"4setCharAt(int i, char c):將第 i 個代碼單元設置為 c(可以理解為替換) strB.setCharAt(2, 'd'); System.out.println("StringBuilder.setCharAt:" + strB); //return "StringBuilder.setCharAt:chd11c"5、insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符() System.out.println("StringBuilder.insertString:"+ strB.insert(2, "LS")); //return "StringBuilder.insertString:chLSd11c" System.out.println("StringBuilder.insertChar:"+ strB.insert(2, 'L')); //return "StringBuilder.insertChar:chLLSd11c"6、delete(int startIndex,int endIndex):刪除起始位置(含)到結尾位置(不含)之間的字符串 System.out.println("StringBuilder.delete:"+ strB.delete(2, 4)); //return "StringBuilder.delete:chSd11c"
  • 最后的一個字母在for循環中無法append,用index記錄該字母的起始位置,字符串長度減去索引位置即是相同字母的長度。
  • 題2

    描述

    羅馬數字包含以下七種字符: I, V, X, L,C,D 和 M。
    字符 數值
    I 1
    V 5
    X 10
    L 50
    C 100
    D 500
    M 1000
    例如, 羅馬數字 2 寫做 II ,即為兩個并列的 1。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。
    通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數字 1 在數字 5 的左邊,所表示的數等于大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為 IX。這個特殊的規則只適用于以下六種情況:
    I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
    X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。
    C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
    給定一個羅馬數字,將其轉換成整數。輸入確保在 1 到 3999 的范圍內。
    示例 1:
    輸入: “LVIII”
    輸出: 58
    解釋: L = 50, V= 5, III = 3.
    示例 2:
    輸入: “MCMXCIV”
    輸出: 1994
    解釋: M = 1000, CM = 900, XC = 90, IV = 4.

    實現

    class Solution {public int romanToInt(String s) {Map<Character,Integer> map = new HashMap<>();map.put('I',1);map.put('V',5);map.put('X',10);map.put('L',50);map.put('C',100);map.put('D',500);map.put('M',1000);int len = s.length();int sum = map.get(s.charAt(len-1));for(int i = len - 2; i >= 0; --i){if(map.get(s.charAt(i)) < map.get(s.charAt(i+1))){sum -= map.get(s.charAt(i));} else{sum += map.get(s.charAt(i));}}return sum;} }

    筆記

  • Java定義字典: Map<Character,Integer> map = new HashMap<>(),插入操作map.put(a,b),根據鍵返回字典值map.get(a),返回b。
  • String類型可以用charAt(index)的方法獲取指定位置的元素值。
  • 題3 最長公共前綴

    描述

    編寫一個函數來查找字符串數組中的最長公共前綴。
    如果不存在公共前綴,返回空字符串 “”。
    示例 1:
    輸入: [“flower”,“flow”,“flight”]
    輸出: “fl”
    示例 2:
    輸入: [“dog”,“racecar”,“car”]
    輸出: “”
    解釋: 輸入不存在公共前綴。

    實現

    class Solution {public String longestCommonPrefix(String[] strs) {int len = strs.length;if(len == 0) return "";int min = 0x7fffffff;for(int i = 0; i < len; i ++){if(strs[i].length() < min){min = strs[i].length();}}for(int j = 0; j < min; j++){for(int i = 1; i < len; i++){if(strs[0].charAt(j) != strs[i].charAt(j)){return strs[0].substring(0,j);}}}return strs[0].substring(0,min);} }

    筆記

  • 0x7fffffff為int的最大值
  • 記錄最小的相同位置
  • 總結

    以上是生活随笔為你收集整理的【LeetCode】3月16日打卡-Day1的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 69xx免费视频 | 精品国产av色一区二区深夜久久 | 久久视频精品在线 | 少妇高潮一区二区三区99 | 国产免费一区二区三区最新不卡 | 变态另类丨国产精品 | 99精品视频在线观看 | 免费黄色国产视频 | 成人亚洲网| 亚洲少妇一区二区三区 | 狼人精品一区二区三区在线 | 精品人妻无码中文字幕18禁 | 午夜啪啪福利 | 可以在线观看的av | 久久国产视频网 | 欧美一卡二卡 | 在线免费色 | 另类激情视频 | 美女日批在线观看 | 欧美日日 | 麻豆影视在线免费观看 | 清冷学长被爆c躁到高潮失禁 | 韩国中文三级hd字幕 | 久久久久亚洲av片无码下载蜜桃 | 欧美日韩一区二区三区四区 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 另类第一页 | 国产精品成人99一区无码 | 国产日韩成人内射视频 | 日本美女一区二区三区 | a天堂最新地址 | www.97超碰| 国产精品国产精品国产专区不片 | 国产福利一区二区三区 | 美人被强行糟蹋np各种play | 男人的天堂亚洲 | 亚洲天堂爱爱 | 国产999久久久 | 少妇高潮一区二区三区在线 | 久久99热人妻偷产国产 | 日韩精品啪啪 | 国产精品免费一区二区三区在线观看 | 精品处破女学生 | 欧美老熟妇乱xxxxx | 欧美日韩成人在线 | 福利在线播放 | 韩国av三级 | 中文字幕制服丝袜 | 99这里只有 | a天堂在线观看 | 99精品视频网站 | 国产一级特黄aaa大片 | 色狠狠av老熟女 | 成年人免费小视频 | 曰本丰满熟妇xxxx性 | 亚洲AV成人无码网站天堂久久 | а中文在线天堂 | 亚洲国产片 | 男女瑟瑟视频 | 欧美黄色影院 | 久久久久中文字幕 | 18av在线视频| 一区二区在线免费视频 | 国产suv一区二区 | 三级av免费看 | 日本综合在线 | 国产亚洲欧美日韩精品一区二区三区 | 林天顾悦瑶笔趣阁 | 欧美黄色免费视频 | 久久久性色精品国产免费观看 | 日韩人妻精品无码一区二区三区 | 丝袜制服一区 | 亚洲一级影院 | 午夜黄色小视频 | 国产高中女学生第一次 | 亚洲骚图 | 亚洲中文字幕无码不卡电影 | 男人和女人搞鸡 | 少妇一级1淫片 | 国产99久久久久久免费看 | 国产又黄又粗 | 夜夜爽av福利精品导航 | 国产女厕一区二区三区在线视 | 自偷自拍av| 亚洲最大av在线 | 欧美三级小说 | 爱欲av | 天堂国产一区二区三区 | 国产伦理一区 | 日韩欧美中文字幕一区二区三区 | 日韩成人高清在线 | 久久久啊啊啊 | 在线伊人| 免费看黄色一级视频 | 国产精品99精品久久免费 | 久久久国产精华液999999 | 色多多在线看 | 光棍影院av | 插插网站 |