leetcode:比较版本号

cpp 复制代码
class Solution {
public:
    stack<int> s1;
    
    
    stack<int> s2;
    
    long long getvalue(string s,int i,bool flag)
    {
        long long ret = 0;
        while (i < s.size() && s[i] == '0')
        {
            i++;
            if (flag)
                s1.push(i);
            else s2.push(i);
        }
        while (i<s.size()&& s[i] != '.')
        {
            ret = ret * 10 + s[i] - '0';
            i++;
            if (flag)
                s1.push(i);
            else s2.push(i);
        }
        return ret;
    }
    int compareVersion(string version1, string version2)
    {
        s1.push(-1);
        s2.push(-1);
        
        while (s1.top()+1 < version1.size() && s2.top()+1 < version2.size())
        {
            int ret = getvalue(version1, s1.top() + 1, 1) - getvalue(version2, s2.top() + 1, 0);
            if (ret > 0) return 1;
            else if (ret < 0) return -1;

        }
        int ret1 = 0;
        int ret2 = 0;
        while (s1.top() + 1 < version1.size())
        {
            ret1 += getvalue(version1, s1.top() + 1, 1);
        }
        while (s2.top() + 1 < version2.size())
        {
            ret2 += getvalue(version2, s2.top() + 1, 0);
        }
        if (ret1 > ret2)
            return 1;
        else if (ret1 < ret2)
            return -1;
        return 0;
        
    }
};

本人写的代码,不一定是最优解

相关推荐
我想走路带风5 小时前
LRU和最长前缀和(计算机网络算法)
计算机网络·算法
M78佐菲5 小时前
Linux学习笔记:进程
linux·笔记·学习·算法
徐小夕7 小时前
表格、文档、甘特、大屏、表单一站打通:pxcharts超级表格4.0正式上线!
前端·算法·github
Xin7707 小时前
LeetCode 23.合并 K 个升序链表(分治递归)
leetcode
TechLee7 小时前
跨语言加解密总对不上?这个纯 Go 神库让 AES/RSA 与 PHP、Java 100% 互通
java·后端·算法
月华路9 小时前
G1 新生代对象晋升老年代:实现机制与 GC 日志
java·jvm·算法
万法若空9 小时前
排列组合恒等式
c++·算法
Nil2089 小时前
leetcode 105从前序和中序遍历序列构造二叉树
算法·leetcode·职场和发展
一直C10 小时前
【数据结构】哈希表+算法复杂度与经典排序查找(C语言)
java·linux·开发语言·数据结构·算法·ubuntu·散列表
淡海水10 小时前
04-02-哈希-Dictionary-TKey-TValue-上-核心数据结构
数据结构·算法·c#·哈希算法·编译·字典·dictionary