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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

leecode 解題總結(jié):165. Compare Version Numbers

2019-11-08 01:33:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
#include <iostream>#include <stdio.h>#include <vector>#include <string>using namespace std;/*問(wèn)題:Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 < version2 return -1, 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分析:"."不是代表數(shù)值中的點(diǎn),而是表示修訂版本的序號(hào),"."號(hào)前面部分的數(shù)字表示的是第幾個(gè)版本,"."修訂版本如果是這樣的話為什么不能轉(zhuǎn)化為小數(shù)直接比較,總不會(huì)存在其他坑人的條件吧?2.2.5。我記得之前就有版本號(hào): 7.2.0.301,7.1.0.302.應(yīng)該就是這種,需要按照"."分割字符串,每一部分轉(zhuǎn)化為整數(shù)比較即可注意"0"這種輸入:7.2.0.301 7.2.1.1007.2.1.100 7.2.0.3017.2.001.1 7.2.001.10.1 1.11.2 13.371 1.11 1.0.0輸出:-110-1-1-10關(guān)鍵:1報(bào)錯(cuò):Input:"1","1.1",Output:1,Expected:-1。如果比較到后面一個(gè)數(shù)為空,遍歷令一個(gè)數(shù)中剩余部分,如果全為0,則相等,否則,剩余的數(shù)對(duì)應(yīng)版本號(hào)大2需要按照"."分割,逐個(gè)比較*/class Solution {public:vector<string> split(string str , string splitStr){vector<string> result;if(str.empty()){return result;}if(splitStr.empty()){result.push_back(str);return result;}int beg = 0;size_t pos = str.find(splitStr , beg);string partialStr;while(string::npos != pos){//切分字符串partialStr = str.substr(beg , pos - beg);if(!partialStr.empty()){result.push_back(partialStr);}beg = pos + splitStr.length();//起始位置等于pos加上長(zhǎng)度pos = str.find(splitStr , beg);}//切分最后一次的結(jié)果partialStr = str.substr(beg , pos - beg);if(!partialStr.empty()){result.push_back(partialStr);}return result;}    int compareVersion(string version1, string version2) {        if(version1.empty() && version2.empty()){return 0;}if(version1.empty()){return -1;}if(version2.empty()){return 1;}vector<string> nums1 = split(version1 , string("."));vector<string> nums2 = split(version2 , string("."));if(nums1.empty()){return -1;}if(nums2.empty()){return 1;}int size1 = nums1.size();int size2 = nums2.size();int minSize = min(size1 , size2);int num1;int num2;for(int i = 0 ; i < minSize ; i++){num1 = atoi(nums1.at(i).c_str());num2 = atoi(nums2.at(i).c_str());//如果第一個(gè)數(shù)大于第二個(gè)數(shù),直接返回if(num1 > num2){return 1;}else if(num1 < num2){return -1;}}//如果全部比完,且長(zhǎng)度相同,返回0if(size1 == minSize && size2 == minSize){return 0;}//第一個(gè)版本號(hào)后面還有元素,說(shuō)明它是較小的,返回-1//取出剩余部分?jǐn)?shù)的每一個(gè)元素,如果全0,就相等,否則剩余數(shù)字對(duì)應(yīng)版本號(hào)較大if(size1 > size2){for(int i = size2 ; i < size1 ; i++){num1 = atoi(nums1.at(i).c_str());if(num1 != 0){return 1;}}return 0;}else{for(int i = size1 ; i < size2 ; i++){num2 = atoi(nums2.at(i).c_str());if(num2 != 0){return -1;}}return 0;}    }};void print(vector<int>& result){if(result.empty()){cout << "no result" << endl;return;}int size = result.size();for(int i = 0 ; i < size ; i++){cout << result.at(i) << " " ;}cout << endl;}void process(){string version1;string version2;Solution solution;int result;while(cin >> version1 >> version2){result = solution.compareVersion(version1 , version2);cout << result << endl;}}int main(int argc , char* argv[]){process();getchar();return 0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 尚志市| 穆棱市| 岢岚县| 宜兰市| 滨海县| 萨嘎县| 庆城县| 翁源县| 邯郸县| 桂东县| 黄浦区| 榆林市| 曲阳县| 郸城县| 舞钢市| 盐边县| 延边| 治多县| 玉龙| 洛隆县| 乌鲁木齐市| 磴口县| 三江| 绥宁县| 邵武市| 外汇| 射洪县| 昌平区| 鹤庆县| 双鸭山市| 滨州市| 通道| 黔南| 宁海县| 呼伦贝尔市| 启东市| 扎赉特旗| 巩留县| 青铜峡市| 岫岩| 揭东县|