【一天一道LeetCode】#165. Compare Version Numbers

来源:互联网 发布:大数据魔镜免费吗 编辑:程序博客网 时间:2024/05/19 01:13

一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处

(一)题目

来源: https://leetcode.com/problems/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 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.2,中间以点(.)隔开,要判断版本号的大小,需要计算每个以点隔开的数的大小。
需要注意一些特殊情况:
(1) 00001.1.1这种前面有0干扰的
(2) 1.0.0.0.0和1是相等的
详细思路见如下代码和注释:

class Solution {public:    int compareVersion(string version1, string version2) {        int len1= version1.length();        int len2= version2.length();        int i = 0;        int j = 0;        while(i<len1&&j<len2)//首先计算两个版本号相同位置的数的大小        {            int num1 =countnum(version1,i);            int num2 =countnum(version2,j);            i++;j++;            if(num1==num2) continue;            else return num1>num2?1:-1;        }        if(i>=len1&&j<len2)//如果version1比较完了,则判断version2后面是否全为0        {            while(j<len2)            {                int num2 =countnum(version2,j);                j++;                if(num2==0) continue;//等于0就继续往后                else return -1;//否则就返回version2大            }            return 0;//全为0就返回相等        }        if(i<len1&&j>=len2)//同上,如果version2比较完了,则判断version1后面是否全为0        {            while(i<len1)            {                int num1 =countnum(version1,i);                i++;                if(num1==0) continue;//等于0就继续往后判断                else return 1;//否则就返回version1大            }            return 0;//全为0就返回相等        }        return 0;//上述比较都相等就返回相等    }    int countnum(string s , int& i)//用来计算以点隔开的数字    {        int len = s.length();        int num = 0;        while(i<len&&s[i]!='.')//碰到结束或者'.'        {            num = num*10+(s[i]-'0');            i++;        }        return num;    }};
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中文全彩再伯母家大汗淋漓电影 我和二伯母愉情电子书 与邻居我和邻居阿夷愉情 我和农村留守妇女愉情真实故事 西游记 之三插王母 水原梨花母友人中文字幕 屁孩睡走叔母3中文字幕 林氏集团和伯母 太监跟娘娘私通小说 欧阳锋跟他大嫂私通在哪一集 太监跟娘娘私通 我和唐伯母在厨房 同居了大嫂中文字幕 年轻的后妈1完整高清免费观看 漂亮的老婆在线中字幕 母亲今晚让你入个够免费阅读 漂亮的续母韩国电影 我的漂亮后妈201电影 朋友的母亲3字幕中文翻译 邻居喝醉我睡了他老婆 白天当儿子晚上当丈夫视频 二姑装睡让我 白天是儿子晚上是丈夫阅读 老公去世和儿儿子做 白天是我妈晚上是老婆 蜜母耻中文字幕下载 友人之母中文字幕视频 友人之母增尾彩 内田春菊友人之母 母友人佐佐木明希中文字幕 友人之母谷源希美西瓜 母友人三浦中文字幕在线播放 大嫂被逼无奈和小叔传种接代 母友人作品封面 6公公与儿熄中文字幕完整视频 退休闲负的公公在家要了我5 我妻子的母亲hd高清中文字幕 叔母到我公寓在线播放 叔母来探望生病的我 叔父叔母来我家住数 请假在朋友妈猛烈中文字幕