牛客题霸 [比较版本号] C++题解/答案

牛客题霸 [比较版本号] C++题解/答案

题目描述

如果version1 > version2 返回1,如果 version1 < version2 返回-1,不然返回0.

输入的version字符串非空,只包含数字和字符.。.字符不代表通常意义上的小数点,只是用来区分数字序列。例如字符串2.5并不代表二点五,只是代表版本是第一级版本号是2,第二级版本号是5.

题解:

将小数点之前的转化成数num1.如果num1一样,依次比小数点后面的

代码:

class Solution {
public:
    /**
     * 比较版本号
     * @param version1 string字符串 
     * @param version2 string字符串 
     * @return int整型
     */
    int compare(string version1, string version2) {
        // write code here
        int i = 0;   ///note version1
        int j = 0;   ///note version2
        int num1 = 0;
        int num2 = 0;
        while (i<version1.size() && j<version2.size())
        {
            char a = version1[i];
            char b = version2[j];
            if (a != '.')num1 = num1*10 + (a - '0');
            if (b != '.') num2 = num2*10 + (b - '0');
            if (a=='.' && b=='.')
            {
                if (num1 > num2)
                    return 1;
                else if (num1 < num2)
                    return -1;
                else
                {
                    num1 = 0;
                    num2 = 0;
                }
            }
            if (a!='.' && b=='.')
                i++;
            else if (a=='.' && b!='.')
                j++;
            else{
                i++;
                j++;
            }
        }
         
        if (i < version1.size())return 1;
        if (j < version2.size())
            return -1;
         
        return 0;
    }
};
posted @ 2020-11-21 12:00  回归梦想  阅读(184)  评论(0编辑  收藏  举报