首页 > 试题广场 >

比较两个版本字符串version1和version2

[编程题]比较两个版本字符串version1和version2
  • 热度指数:4528 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

如果version1 > version2 返回1,如果 version1 < version2 返回-1,不然返回0.

输入的version字符串非空,只包含数字和字符..字符不代表通常意义上的小数点,只是用来区分数字序列。例如字符串2.5并不代表二点五,只是代表版本是第一级版本号是2,第二级版本号是5.


输入描述:
两个字符串,用空格分割。
每个字符串为一个version字符串,非空,只包含数字和字符.


输出描述:
只能输出1, -1,或0
示例1

输入

0.1 1.1

输出

-1

备注:
version1和version2的长度不超过1000,由小数点'.'分隔的每个数字不超过256。
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input1 = in.next();
        String input2 = in.next();
        if (input1.equals(input2)) {
            System.out.println(0);
            return;
        }
        String[] v1 = input1.split("\\.");
        String[] v2 = input2.split("\\.");
        int len1 = v1.length;
        int len2 = v2.length;
        for (int i = 0; i < Math.min(len1, len2); i++) {
            if (Integer.parseInt(v1[i]) < Integer.parseInt(v2[i])) {
                System.out.println(-1);
                return;
            } else if (Integer.parseInt(v1[i]) > Integer.parseInt(v2[i])) {
                System.out.println(1);
                return;
            }
        }
        //可能一个版本号是另一个版本的子串,也有可能完全相同
        if (len1 < len2) {
            System.out.println(-1);
            return;
        } else if (len1 > len2) {
            System.out.println(1);
            return;
        } else {
            System.out.println(0);
            return;
        }
    }
}


发表于 2024-11-01 20:47:17 回复(0)
/*
不仅要考虑字符串长度相同还要考虑不同的时候
*/
import java.io.*;
    
public class Main{
    public static void main( String[] args ) throws IOException{
        BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
        String[] inarr = br.readLine().split( " " );
        String[] str1 = inarr[0].split("\\.");
        String[] str2 = inarr[1].split("\\.");
        
        //先直接进行比较,看看谁的版本高
        for( int i=0; i<str1.length && i<str2.length; i++ ){
            if( Integer.parseInt( str1[i] ) < Integer.parseInt( str2[i] ) ){
                System.out.println( "-1" );
                return;
            }
            else if( Integer.parseInt( str1[i] ) > Integer.parseInt( str2[i]) ){
                System.out.println( "1" );
                return;
            }
        }
        
        //当前面的比较没有成功,有如下情况
        //长度相同时版本一致,
        //一长一短,并且短的部分与长的前面相同
        if( str1.length == str2.length ){
            System.out.println( "0" );
        }
        else if( str1.length < str2.length ){
            System.out.println( "-1" );
        }
        else{
            System.out.println( "1" );
        }
        return;
    }
}

发表于 2020-05-23 15:20:20 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] v1 = sc.next().split("\\.");
        String[] v2 = sc.next().split("\\.");
        int len = Math.max(v1.length, v2.length);
        int[] num1 = new int[len];
        int[] num2 = new int[len];
        for (int i = 0; i < v1.length; i++) {
            num1[i] = Integer.parseInt(v1[i]);
        }
        for (int i = 0; i < v2.length; i++) {
            num2[i] = Integer.parseInt(v2[i]);
        }
        int index = 0;
        while (index < len) {
            if (num1[index] < num2[index]) {
                System.out.println(-1);
                return;
            } else if (num1[index] > num2[index]) {
                System.out.println(1);
                return;
            } else {
                index++;
            }
        }
        System.out.println(0);
    }
}
发表于 2019-08-20 15:13:28 回复(0)

热门推荐

通过挑战的用户

查看代码
比较两个版本字符串version1和version2