多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Compare Version Numbers

Compare Version Numbers

來源:程序員人生   發布時間:2015-01-16 08:15:15 閱讀次數:2769次

本文是在學習中的總結,歡迎轉載但請注明出處:http://blog.csdn.net/pistolove/article/details/42342251


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

You may assume that the version strings are non-empty and contain only digits and the . character.
The . character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.

Here is an example of version numbers ordering:

0.1 < 1.1 < 1.2 < 13.37


思路:

(1)題意為比較版本號大小。但是版本號可以包括多個小數點,例如1.0.0.1和1.0.0.0.2這樣的情況也會產生。

(2)判斷進程分為幾種情況:如果給定的版本號包括“.”,則需要將其中的字符分開并存到鏈表中,如果不包括,則直接存入鏈表便可。

(3)兩個版本號都存入到鏈表,遍歷較長的鏈表,進行比較判斷,直到從兩個鏈表取出的字符對應的整數值不相等,則返回判斷得到的值;如果遍歷完較短的鏈表還未判斷出大小,則視較短鏈表后續元素為0與較長鏈表進行比較,直到較長鏈表遍歷完成為止,返回對應的值。(由于可能出現類似1.1.0.0.0、1.1.0.0.1和1.1之間的比較,此時必須遍歷完較長的鏈表)

(4)下面簡單舉例子說明:

     對1.1.0.1和1.1.0

       a:對應的鏈表(以數組表示)為[1,1,0,1]和[1,1,0]

       b:遍歷完前3次后,其對應的位置上的值都相等,而此時[1,1,0]所有元素都遍歷完了,但是還需要繼續,將[1,1,0]“第4個位置”元素設為            0進行比較,此時得到1,1,0,1]對應的元素要大于0,即1.1.0.1 > 1.1.0,返回對應結果。

       c:類似1.1.1.0和1.1.1.0.0的比較類似,在此不舉例子說明。

(5)代碼很長,但是思路還是比較清晰的,希望對你有所幫助。


算法代碼實現以下:

public static int compareVersion(String version1, String version2) { List<String> list1 = new LinkedList<String>(); if(version1.contains(".")){ char[] charArray = version1.toCharArray(); StringBuffer buffer = new StringBuffer(); for (int i = 0; i < charArray.length; i++) { if(charArray[i]!='.'){ buffer.append(charArray[i]); if(i==charArray.length⑴){ list1.add(buffer.toString()); } }else{ list1.add(buffer.toString()); buffer.setLength(0); } } }else{ list1.add(version1); } List<String> list2 = new LinkedList<String>(); if(version2.contains(".")){ char[] charArray = version2.toCharArray(); StringBuffer buffer = new StringBuffer(); for (int i = 0; i < charArray.length; i++) { if(charArray[i]!='.'){ buffer.append(charArray[i]); if(i==charArray.length⑴){ list2.add(buffer.toString()); } }else{ list2.add(buffer.toString()); buffer.setLength(0); } } }else{ list2.add(version2); } int max = list1.size() >= list2.size()? list1.size():list2.size(); for (int i = 0; i < max; i++) { if(list1.size()>=list2.size()){ if(i>list2.size()⑴){ if(compare(list1.get(i),"0")==0){ continue; }else{ return compare(list1.get(i),"0"); } }else{ if(compare(list1.get(i),list2.get(i))==0){ continue; }else{ return compare(list1.get(i),list2.get(i)); } } } if(list2.size()>list1.size()){ if(i>list1.size()⑴){ if(compare("0",list2.get(i))==0){ continue; }else{ return compare("0",list2.get(i)); } }else{ if(compare(list1.get(i),list2.get(i))==0){ continue; }else{ return compare(list1.get(i),list2.get(i)); } } } } return 0; } public static int compare(String s1, String s2){ int v1 = Integer.parseInt(s1); int v2 = Integer.parseInt(s2); if(v1>v2){ return 1; }else if(v1<v2){ return ⑴; }else{ return 0; } }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美一级毛片一 | 成人在线亚洲 | 久久七国产精品 | 国产亚洲欧美另类一区二区三区 | 午夜精品久久久久久久久 | 视频www| 亚洲视频中文 | japanese强迫第一次护士 | 国产不卡一区二区三区免费视 | 动漫网站在线观看 | 精品精品国产高清a毛片牛牛 | 美国一级免费 | 欧美video| 日本高清免费视频色www | 国产精品免费一区二区三区 | 在线看片欧美 | 日本www片| 久久久www成人免费精品 | 日本成人高清视频 | 国产国产成人精品久久 | 国产亚洲精品九九久在线观看 | 在线观看免费亚洲 | 欧美黑人在线视频 | www久| 亚洲第一福利网站 | 国产欧美视频一区二区三区 | 一本本久综合久久爱 | 欧美性猛交xxxx乱大交be | 女人大毛片一级毛片一 | 亚洲综合色网站 | 国内久久精品视频 | 国产精品亚洲精品日韩己满十八小 | 欧美xxxx视频 | 激情综合五月天丁香婷婷 | 欧美成人天天综合在线视色 | 日本一区二区三 | 一级毛毛片毛片毛片毛片在线看 | 天啦噜tianlalu精品视频 | 最近中文字幕高清字幕在线视频 | 国产人人爱 | 免费看逼逼 |