1. 程式人生 > >Compare Version Numbers字串的應用+小技巧

Compare Version Numbers字串的應用+小技巧

  • 題目描述
    leetcode 中等難度題 “165. Compare Version Numbers”
    這裡寫圖片描述

  • 評價
    該題的題目描述的例子舉得不是很好,會產生誤導(至少我一開始就理解錯題目了)。應該舉如下的例子,“1.0.1”>”1”, “3.4.5.6”<”3.4.5.7”等,即點”.”不止只會出現一次。

  • 分析
    在真正理解題目後,問題就變得簡單了。我們可以把該問題轉化為迴圈判斷兩部分的大小,直到能比出結果就返回。
    如version1=”3.4.5.6”和version2=”3.4.5.7”比較,3=3,4=4,5=5,6<7,所以”3.4.5.6”<”3.4.5.7”。
    再比如version1=“2.3.5”和version2=“1.3”比較,2>1,所以“2.3.5”>”1.3”

    那上述涉及到的程式設計點就是,字串中子串的提取,字串轉化成數字比較大小(為什麼不能直接字串比較,因為以“13”和“2”為例,字串比較的結果為“13”<”2”,而非13>2)

  • 程式碼實現

class Solution {
public:
    int compareVersion(string version1, string version2) {
        string part1,part2;
        int pos1=0,pos2=0;
        while (!(version1 =="00" && version2 =="00")){
            pos1 = version1.find("."
); if(pos1==-1){ part1=version1; version1="00"; //設定為00,便於判斷是否已把字串遍歷完,而不與字串裡的“0”衝突; //同時,“00"轉換為數字的值也是0,可以得到與使用“0”進行比較的相同結果 }else{ part1=version1.substr(0,pos1); version1=version1.substr(pos1+1
); } pos2 = version2.find("."); if(pos2==-1){ part2=version2; version2="00"; }else{ part2=version2.substr(0,pos2); version2=version2.substr(pos2+1); } if(atoi(part1.c_str())>atoi(part2.c_str())) return 1; else if(atoi(part1.c_str())<atoi(part2.c_str())) return -1; } return 0; } };
  • 小技巧
    小技巧見程式碼中的註釋所示,節省了判斷是否把字串遍歷完的程式碼。

相關推薦

Compare Version Numbers字串應用+技巧

題目描述 leetcode 中等難度題 “165. Compare Version Numbers” 評價 該題的題目描述的例子舉得不是很好,會產生誤導(至少我一開始就理解錯題目了)。應該舉

【leetcode 字符串處理】Compare Version Numbers

author 大小 pac tex onos article padding pop 題意 【leetcode 字符串處理】Compare Version Numbers @author:wepon @blog:http://blog.csdn.net/u0121

java集合框架+應用技巧

log 排序 分享圖片 width 方法 empty val nbsp 是否為空 一、大體介紹 1.接口 集體接口在collections: 提供了對集合進行排序,遍歷等多種算法的實現 List是不唯一,有序的 Set是唯一,有序的 1.ArrayList 不唯一

[LeetCode] 165. Compare Version Numbers 比較版本數

test case numbers cas return only problem it is you div Compare two version numbers version1 and version1.If version1 > version2 retur

165 Compare Version Numbers 比較版本號

序列 logs 兩個 body size string 一半 3.3 例如 比較兩個版本號 version1 和 version2。如果 version1 大於 version2 返回 1,如果 version1 小於 version2 返回 -1, 除此以外 返回 0。您

165. Compare Version Numbers - LeetCode

alt pre desc ever 分享圖片 ems 個數 src lock Question 165. Compare Version Numbers Solution 題目大意: 比較版本號大小 思路: 根據逗號將版本號字符串轉成數組,再比較每個數的大小 Ja

leetcode【165】Compare Version Numbers

寫在最前面:我承認我菜,對於這道題,我真的無話可說 Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return

【python/M/leetcode】Compare Version Numbers

題目 https://leetcode.com/problems/compare-version-numbers/ 注意 就注意一下開始和末尾有0的情況 01 和 1 1.0 和 1 的區別 實現程式碼 class Solution(object):

[Swift]LeetCode165. 比較版本號 | Compare Version Numbers

Compare two version numbers version1 and version2.If version1 > version2 return 1; if version1 &l

LeetCode--165. Compare Version Numbers

題目連結:https://leetcode.com/problems/compare-version-numbers/ 一大早看到如此簡單的題似乎膨脹了,這個不就是字串排序(比較)的子問題嘛,比較一下就完了,於是咔咔咔寫出了下面的無腦程式碼: class Solution { pub

165. Compare Version Numbers

首先想到的解法是根據'.'分割出字串,然後求解。 由於忘了怎麼使用'.'去分割,所以自己寫了一個函式去轉換。 剛開始兩次提交分別出錯。 一個是沒有考慮1,0這種不帶'.'的,就是轉換函式寫錯了。:在轉換函式結尾處新增:list.add(Integer.parseIn

[LeetCode] Compare Version Numbers 版本比較

Compare two version numbers version1 and version2.If version1 > version2 return 1; if version1 <version2 return -1;otherwise return 0. You may ass

【LeetCode-面試演算法經典-Java實現】【165-Compare Version Numbers(比較版本號)】

原題   Compare two version numbers version1 and version2.   If version1 > version2 return

Compare Version Numbers

描述 Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return -1, ot

leetcode 165 Compare Version Numbers

Compare two version numbers version1 and version2. If version1 > version2 return 1, if version1 < version2 return -1, otherwise r

OMG,12 個精緻的 Java 字串操作技巧,學它

字串可以說是 Java 中最具有代表性的類了,似乎沒有之一哈,這就好像直播界的李佳琪,脫口秀中的李誕,一等一的大哥地位。不得不承認,最近吐槽大會刷多了,腦子裡全是那些段子,寫文章都有點不由自主,真的是,手不由己啊。 字串既然最常用,那就意味著面試官好這一口,就喜歡問一些字串方面的編碼技巧,來測試應聘者是否技術

python3技巧之:如何判斷字串是數字

     python中的字串有專門判斷是否為數字的函式isdigit(),當字元中的元素全部是整數,而且至少有一個字元時返回True,否則返回False。 >>> '1235'.isdigit() True >>> '1'.is

js-字串與陣列相互轉化及使用技巧

1)陣列轉換成字串(型別的轉換,資料內容不改變) 如arr = [0x12,0x92,0x89];     str = arr.join(");          

微信程式開發:提高應用速度技巧

小程式科普類的文章已經很多了,今天這裡講的是針對小程式的優化方法,可以有效提高小程式的響應速度和使用者體驗。當然,開發體驗也提高不少。 一、提高頁面載入速度 在小程式這個環境下,怎樣提高頁面載入

EXCEL辦公應用--13個實用技巧

1,=SUBSTITUTE(SUBSTITUTE(IF(C60>-0.5%,“負”)&TEXT(INT(FIXED(ABS(C60))),"[dbnum2]G/通用格式元;;")&IF(AND(INT(C60)<>0,INT(C