算法-字符串-165.比较版本号

发布于:2024-12-18 ⋅ 阅读:(48) ⋅ 点赞:(0)

一、题目

二、思路解析

        1.思路:

                比较的是两个版本号它们以“.”作为分割的部分的有效值(即数值)是否一致

        2.常用方法:

                1.s.split("\\规则"),将字符串按参数规则进行分割并存储在字符串数组中

String[] str = s.split("\\."); //按“.”进行分割得到对应的几段子字符串,并依次存入str数组中

                2.Integer.parseInt(参数),将参数的类型转换为int类型

int num=Integer.parseInt(str[i]);

        3.核心逻辑:

                1.将两个版本号分别根据自己的“.”进行分割转为string数组

String[]str1=version1.split("\\.");
String[]str2=version2.split("\\.");

                2.获取两个版本号对应数组中最大的长度,因为要比对二者版本是否一致,需要比对所有数值

int maxLen=Math.max(str1.length,str2.length);

                3.遍历,获取到对应数组下标的元素,进行比对

                        √.注意事项:

                                当前下标大于数组的长度时, 此时补0

for(int i=0;i<maxLen;i++){
    int num1=i<size1?Integer.parseInt(str1[i]):0;
    int num2=i<size2?Integer.parseInt(str2[i]):0;

    if(num1!=num2){
        return num1<num2?-1:1;
}
}
        return 0;

三、代码实现

class Solution {
    public int compareVersion(String version1, String version2) {
        String[]str1=version1.split("\\.");
        String[]str2=version2.split("\\.");
        int maxLen=Math.max(str1.length,str2.length);

        for(int i=0;i<maxLen;i++){
            int num1=i<str1.length?Integer.parseInt(str1[i]):0;
            int num2=i<str2.length?Integer.parseInt(str2[i]):0;

            if(num1!=num2){
                return num1<num2?-1:1;
            }
        }
        return 0;
    }