(python算法)LeetCode-版本号比较

第一次笔试,发挥的很糟糕(基础不好是硬伤),碰到了版本号比较这个问题,回来后搜了下,发现在LeetCode里有,正好再仔细研究下。以下是原题

比较两个版本号 version1 和 version2。
如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。

示例 1: 输入: version1 = “0.1”, version2 = “1.1” 输出: -1
示例 2:输入: version1 = “1.0.1”, version2 = “1” 输出: 1
示例 3: 输入: version1 = “7.5.2.4”, version2 = “7.5.3” 输出: -1

这题初看很简单,思路很简单,以‘.’划分好,然后进行数字比大小,实际手写的时候发现很多坑。笔试的时候只有一个示例,没考虑太多写的时候就开始乱了。
第一个坑自己一开始竟然没意识到的,划分好的元素还是字符串格式,忘了int,哭,流下了基础太差的泪水。。
第二个,得到的列表长度不一样时,考虑的方法,笔试的时候想强行直接比较,写了一堆判断长度,再for循环,发现都有漏洞,卒。。。到最后绕过来,想到补0,但是已经没时间再去操作了,头也很大了。
回来痛定思痛,按着补0,操作了一下,虽然通过了,但是很不理想。看了下有相同思路补0的,写的比自己简单点,不用判断长度,果然还是练得太少。。。

class Solution:
    def compareVersion(self, version1: str, version2: str) -> int:
        l_1 = [int(i) for i in version1.split('.')]
        l_2 = [int(i) for i in version2.split('.')]   
        c = abs(len(l_2)-len(l_1))
        if len(l_2)> len(l_1):
            l_1 += [0]*c
        else:
            l_2 += [0]*c
        for i in range(len(l_1)):
            if l_1[i]>l_2[i]:
                return 1
            elif l_1[i]<l_2[i]:
                return -1
            else:
                pass
        return 0

补0思路总的来说还是不太行,看了评论里写的,用while循环,好推一点,关键是把握好代码执行的顺序,推下来感觉也很巧妙=。=,平时总是for,有时候还是要换换循环。贴出代码:

def fun2(v1,v2):
    l_1 =v1.split('.')
    l_2 = v2.split('.')
    c =0
    while True:
        if c == len(l_1) and c==len(l_2):
            return 0
        if len(l_1)==c:
            l_1.append(0)
        if len(l_2)==c:
            l_2.append(0)
        if int(l_1[c])>int(l_2[c]):
            return 1
        elif int(l_1[c])<int(l_2[c]):
            return -1
        c+=1

其实本质上是差不多的,看了评论里也没有更好的答案= =,还是多多练习吧。
第一次笔试就这么告终了,说实话题都是很好的,很基础,输的心服口服,平常只顾爬虫,很少兼顾到这些,还是狠狠敲打了自己,要练练基础!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LeetCode-Editor是一种在线编码工具,它提供了一个用户友好的界面编写和运行代码。在使用LeetCode-Editor时,有时候会出现乱码的问题。 乱码的原因可能是由于编码格式不兼容或者编码错误导致的。在这种情况下,我们可以尝试以下几种解决方法: 1. 检查文件编码格式:首先,我们可以检查所编辑的文件的编码格式。通常来说,常用的编码格式有UTF-8和ASCII等。我们可以将编码格式更改为正确的格式。在LeetCode-Editor中,可以通过界面设置或编辑器设置来更改编码格式。 2. 使用正确的字符集:如果乱码是由于使用了不同的字符集导致的,我们可以尝试更改使用正确的字符集。常见的字符集如Unicode或者UTF-8等。在LeetCode-Editor中,可以在编辑器中选择正确的字符集。 3. 使用合适的编辑器:有时候,乱码问题可能与LeetCode-Editor自身相关。我们可以尝试使用其他编码工具,如Text Editor、Sublime Text或者IDE,看是否能够解决乱码问题。 4. 查找特殊字符:如果乱码问题只出现在某些特殊字符上,我们可以尝试找到并替换这些字符。通过仔细检查代码,我们可以找到导致乱码的特定字符,并进行修正或替换。 总之,解决LeetCode-Editor乱码问题的方法有很多。根据具体情况,我们可以尝试更改文件编码格式、使用正确的字符集、更换编辑器或者查找并替换特殊字符等方法来解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值