题解 | #比较版本号#

比较版本号

https://www.nowcoder.com/practice/2b317e02f14247a49ffdbdba315459e7

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 比较版本号
     * @param version1 string字符串 
     * @param version2 string字符串 
     * @return int整型
     */
    int compare(string version1, string version2) {
        // write code here
        string stringA = version1;
        string stringB = version2;
        vector<int> intA;
        vector<int> intB;
        //先删除前面的0和点
        int i = 0;
        int j = 0;
        while (stringA.size() > 0 && i<stringA.size()) {
            
            if(stringA[i] == '.'){
                int tmp = stoi(stringA.substr(0, i));
                cout<<"tmp的数值"<< tmp <<endl;
                intA.push_back(tmp);
                stringA.erase(stringA.begin(), stringA.begin()+i+1);
                i = 0;
                cout<<"stringA剩余"<<stringA<<endl;
            }
            else{
                i++;
            }
        }
        
        if(stringA.size()>0){
            int tmp = stoi(stringA);
            intA.push_back(tmp);
        }
        while (stringB.size() > 0 && j<stringB.size()) {
            if(stringB[j] == '.'){
                int tmp = stoi(stringB.substr(0, j));
                cout<<"tmp的数值"<< tmp <<endl;
                intB.push_back(tmp);
                stringB.erase(stringB.begin(), stringB.begin()+j+1);
                j = 0;
                cout<<"stringB剩余"<<stringA<<endl;
            }
            else{
                j++;
            }
        }
        if(stringB.size()>0){
            int tmp = stoi(stringB);
            intB.push_back(tmp);
        }
        for(int x = 0;x<intA.size();x++) cout<<intA[x];
        cout<<endl;
        for(int x = 0;x<intB.size();x++) cout<<intB[x];
        cout<<endl;
        if(intA.size()>intB.size()){
            for(int x = 0;intA.size()-intB.size();x++){
                intB.push_back(0);
            }
        }
        else if (intA.size()<intB.size()) {
            for(int x = 0;intB.size()-intA.size();x++){
                intA.push_back(0);
            }
        }
        for(int t = 0; t<intA.size();t++){
            cout<<"开始比较"<<intA[t]<<","<<intB[t]<<endl;
            if(intA[t]>intB[t]){
                return 1;
            }
            else if(intA[t]<intB[t]){
                return -1;
            }
        }
        return 0;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-30 11:32
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务