小白学习[leetcode]之165比较版本号

题目的链接在这里:https://leetcode-cn.com/problems/distribute-candies/


题目大意

给你两个版本号 version1 和 version2 ,请你比较它们。

版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。

比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 001 相等 。如果版本号没有指定某个下标处的修订号,则该修订号视为 0 。例如,版本 1.0 小于版本 1.1 ,因为它们下标为 0 的修订号相同,而下标为 1 的修订号分别为 0 和 1 ,0 < 1 。


一、示意图

在这里插入图片描述

二、解题思路

java实现(但需要修改)

代码如下:

class Solution {
    public int compareVersion(String version1, String version2) {
        //其实是可以他拿来直接当做字符串数组来比较的,也就是先比一个第一个.之前的数组
        //看他们的值是否相同,甚至可以说是,用来比两个.之间的数组,他们是否相同
        //可以写两个方法,第一个方法是把字符串变成int数字,第二个方法就是两者之间比较
        //网上看了一下,可以用正则表达式来截取,所以还想到一个方法就是,把每个字符串都用正则表达式表示出来,然后直接把他们都合到一块,直接用加法的形式(可能会出现一点点错误)来比较两者的大小
        //这里有这个细节
        String[]vers1=version1.split("\\.");
        String[]vers2=version2.split("\\.");
        //先直接把他们分割开
        //再写一个方法来返回他们的值,也就是Int的方法,这里方法也需要修改了
         int v1=getNum(vers1,vers2);
        return  v1;


    }
    //这个方法是用来得到每个字符串数组的值的综合,考虑到之前的用加法不太稳健的前提之下,
    //把参数设置成两个,然后再每一个分割里进行对比
      public  static  int getNum(String[] num1,String[]num2){
         int len1=num1.length;
         int len2=num2.length;
         //把这个方法修改一下,直接用来比较,用while来,然后如果相同,就继续比较,如果不同的话,就按照大小来比,然后退出
         int i=0;
         int j=0;
         while(i<len1&&j<len2){
             //三类情况来看,如果相同就不用管,如果不同的话,按照大小来管
             int res1=Integer.parseInt(num1[i]);
             int res2=Integer.parseInt(num2[j]);
             if(res1>res2){
                 return 1;
                 //如果这两个相同的话就继续
             }
             else if(res1<res2){
                 return -1;
             }
             else{
                 i++;
                 j++;
             }
         }
         //经过测试,发现这里也需要再改改
         if(i==j)
         return 0;
         else{
             
         }
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值