比较版本号大小c语言,比较两个版本字符串version1和version2

8

# python中的列表可以直接比较,只要把输入的数字按照'.'分割后,换为整数列表即可。

num = input().split()

version1 = list(map(int, num[0].split(".")))

version2 = list(map(int, num[1].split(".")))

if version1

print(-1)

elif version1>version2:

print(1)

else:

print(0)

#print(version1, version2)

发表于 2019-07-04 11:09:50

回复(0)

2

//用c语言的scanf输入int判断更便捷;

#include 

using namespace std;

int main(){

vector arr1,arr2;

int i=0,t;

while(1){

if(cin.peek()==' ')

break;

scanf("%d.",&t);

arr1.push_back(t);

}

while(1){

if(cin.peek()=='\n')

break;

scanf("%d.",&t);

arr2.push_back(t);

}

while(i!=arr1.size()&&i!=arr2.size()){

if(arr1[i]!=arr2[i]){

t=arr1[i]>arr2[i] ? 1:-1;

break;

}

i++;

}

if(i==arr1.size()||i==arr2.size()){

if(arr1.size()==arr2.size())

t=0;

else

t= arr1.size()>arr2.size() ? 1:-1;

}

cout<

return 0;

}

发表于 2019-11-13 10:06:33

回复(0)

2

x,y = map(lambda x:list(map(int, x.split('.'))), input().split())

if x > y: print(1)

elif x 

else: print(0)

发表于 2019-09-12 05:09:41

回复(0)

1

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.IOException;

public class Main {

public static void main(String[] args) throws IOException {

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String line;

while((line = br.readLine()) != null){

String[] strArr = line.trim().split(" ");

System.out.println(solve(strArr[0], strArr[1]));

}

}

private static int solve(String version1, String version2) {

String[] version1Split = version1.split("\\.");

String[] version2Split = version2.split("\\.");

int idx = 0;

// 逐位比较版本号

while(idx 

// 有大小关系时直接返回比较结果,否则跳到下一位进行比较

if(Integer.parseInt(version1Split[idx]) > Integer.parseInt(version2Split[idx]))

return 1;

else if(Integer.parseInt(version1Split[idx]) 

return -1;

else

idx ++;

}

// 两个版本号的公共长度相同,谁长谁大

if(idx 

return 1;

else if(idx 

return -1;

else

return 0;

}

}

发表于 2020-10-26 11:26:48

回复(0)

1

/*

不仅要考虑字符串长度相同还要考虑不同的时候

*/

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

if( Integer.parseInt( str1[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 

System.out.println( "-1" );

}

else{

System.out.println( "1" );

}

return;

}

}

发表于 2020-05-23 15:20:20

回复(0)

1

#include 

using namespace std;

int Cmp(string a, string b){

if(a==b)

return 0;

int m = a.length(), n = b.length();

int i=0, j=0, p=0, q=0;

while(i

while(i

i++;

string c = a.substr(p,i-p);

i++;

p = i;

while(j

j++;

string d = b.substr(q,j-q);

j++;

q = j;

if(c==d)

continue;

if(stoi(c)>stoi(d))

return 1;

else

return -1;

}

if(i>=m && j

return -1;

if(i=n)

return 1;

return 0;

}

int main(){

string a,b;

cin>>a>>b;

cout<

return 0;

}

发表于 2019-10-02 21:26:21

回复(0)

1

def main():

a = list(input().split(" "))

b, c = [list(map(int,it.split("."))) for it in a]

l = abs(len(b) - len(c))

if l and len(b) > len(c):

c += [0] * l

if l and len(b) 

b += [0] * l

for c1, c2 in zip(b, c):

if c1 > c2:

print(1)

return

elif c1 

print(-1)

return

print(0)

if __name__ == "__main__":

main()

发表于 2019-09-19 09:10:07

回复(0)

1

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)

1

#include

using namespace std;

int main()

{

string s1,s2;

cin>>s1>>s2;

int n1=0,n2=0,i=0,j=0;

while(i

{

if(i==s1.size()&&j

{

cout<

break;

}

if(i

{

cout<<1<

break;

}

if(i>=s1.size()&&j>=s2.size())

{

cout<<0<

break;

}

if(s1[i]!='.'&&i

{

n1 += n1*10 + s1[i] - '0';

++i;

}

if(s2[j]!='.'&&j

{

n2 += n2*10 + s2[j] - '0';

++j;

}

if(s1[i]=='.'&&s2[j]=='.')

{

if(n1>n2)

{

cout<<1<

break;

}

else if(n1

{

cout<

break;

}

else

{

n1=0;

n2=0;

i++;

j++;

}

}

}

if(i==s1.size()&&j==s2.size())

{

if(n1>n2)

cout<<1<

else if(n1

cout<

else

cout<<0<

}

return 0;

}

发表于 2019-07-23 09:19:17

回复(0)

1

# Python3 代码---完全通过版

def judgeTwoVersion(str0):

a, b = str0[0], str0[1]

# 将字符串转存为两个列表

list_a, list_b = a.split('.'), b.split('.')

# 求最小的长度,考虑到两个字符串可能出现长度不等的情况

mylen = min(len(list_a), len(list_b))

# 等长度判断

for i in range(mylen):

if int(list_a[i]) < int(list_b[i]):

print('-1')

break

elif int(list_a[i]) > int(list_b[i]):

print('1')

break

elif int(list_a[i]) == int(list_b[i]):

continue

# 非等长度判断

if i == mylen - 1 and list_a[mylen - 1] == list_b[mylen - 1]:

if len(list_a) > len(list_b):

print('1')

elif len(list_a) < len(list_b):

print('-1')

elif len(list_a) == len(list_b):

print('0')

# 主函数

if __name__ == '__main__':

str0 = [i for i in input().split()] # 输入字符串

judgeTwoVersion(str0) # 输出判断结果

需要注意的2个问题:两个字符串的长度可能不同;

输入的字符串中可能出现多个.。 代码仍然存在优化改进的地方。

编辑于 2019-05-12 14:42:36

回复(1)

0

package main

import (

"fmt"

"strconv"

"strings"

)

func main() {

str1,str2:="",""

fmt.Scan(&str1,&str2)

if str1==str2{

fmt.Println(0)

}else{

str11:=strings.Split(str1,".")

str21:=strings.Split(str2,".")

n:=min(len(str11),len(str21))

for i:=0;i

num1,_:=strconv.Atoi(str11[i])

num2,_:=strconv.Atoi(str21[i])

if num1>num2{

fmt.Println(1)

return

}else if num1

fmt.Println(-1)

return

}

}

if len(str11)

fmt.Println(-1)

}else{

fmt.Println(1)

}

}

}

func min(a,b int) int {

if a>b{

return b

}

return a

}

发表于 2020-08-16 17:46:52

回复(0)

0

#include

#include

#include

using namespace std;

int cmp (string s1,string s2)

{

if(s1.length()==s2.length())

{

if(s1==s2)

return 0;

else if(s1>s2)

return 1;

else

return -1;

}else if(s1.length()>s2.length())

return 1;

else

return -1;

}

int cmp_version(string s1,string s2)

{

string t1="",t2="";

int n1=s1.length();

int n2=s2.length();

int i=0,j=0;

int res;

while(i

t1="";

t2="";

while(i

{

t1+=s1[i++];

}

while(j

{

t2+=s2[j++];

}

i++;j++;

res=cmp(t1,t2);

if(res==1)

return 1;

else if(res==-1)

return -1;

}

if(j

if(i

return 0;

}

int main()

{

string s1,s2;

cin>>s1>>s2;

cout<

return 0;

}

发表于 2020-07-28 22:53:00

回复(0)

0

#include 

(720)#include 

// #include 

using namespace std;

int versionCompare(string& version1, string& version2) {

char* p1 = (char*)version1.data();

char* p2 = (char*)version2.data();

int v1, v2;

while(*p1 || *p2) {

v1 = v2 = 0;

if (*p1) v1 = atoi(p1);

if (*p2) v2 = atoi(p2);

if (v1 > v2) return 1;

if (v1 

while (*p1 && *p1 != '.') ++p1;

if (*p1 == '.') ++p1;

while (*p2 && *p2 != '.') ++p2;

if (*p2 == '.') ++p2;

}

return 0;

}

int main() {

string version1, version2;

while (cin >> version1 >> version2) {

int ret = versionCompare(version1, version2);

cout <

}

return 0;

}

发表于 2020-03-15 01:09:24

回复(0)

0

#include 

using namespace std;

int main()

{

string version1, version2;

cin>>version1>>version2;

int n1 = version1.size(), n2 = version2.size();

int p1 = 0, p2 = 0;

while(p1

{

int start1 = p1, start2 = p2;

while(p1

while(p2

int t1 = stoi(version1.substr(start1, p1-start1));

int t2 = stoi(version2.substr(start2, p2-start2));

if(t1

{

cout<

return 0;

}

else if(t1>t2)

{

cout<<1<

return 0;

}

p1++, p2++;

}

if(p1>n1 && p2>n2)

{

cout<<0<

}

else if(p1>n1)

{

cout<

return 0;

}

else

{

cout<<1<

return 0;

}

}

发表于 2019-12-28 14:56:16

回复(0)

0

实在是太简单了

#include 

#include 

#include 

using namespace std;

int x[10005], y[10005], c1=1, c2=1;

char a[100005], b[10005];

int main()

{

cin >> a >> b;

int l = strlen(a);

for(int i = 0; i 

{

if(a[i] == '.')

c1++;

else

x[c1] = x[c1] * 10 + (a[i] - '0');

}

l = strlen(b);

for(int i = 0; i 

if(b[i] == '.')

c2++;

else

y[c2] = y[c2] * 10 + (b[i] - '0');

for(int i = 1; i <= max(c1,c2); i++)

if(x[i] 

{

printf("-1\n");

return 0;

}

else if(x[i] > y[i])

{

printf("1\n");

return 0;

}

printf("0\n");

return 0;

}

发表于 2019-11-06 15:07:17

回复(0)

0

#include 

using namespace std;

#define Up(i,a,b) for(int i = a; i <= b; i++)

#define ms(a,x) memset(a,x,sizeof(a))

typedef long long ll;

void split(vector &v,string s)   //把字符串s按.分隔开并存入v中

{

int bg = 0, ed = s.find('.');

int len = s.length()-1;

Up(i,0,len)

{

if(s[i] == '.')

{

ed = i;

int t = stoi(s.substr(bg,ed-bg));   //获取各级版本号

// cout <

v.push_back(t);

bg = ed+1;

}

if(i == len)   //最后一个版本号

{

ed = len+1;

int t = stoi(s.substr(bg,ed-bg));

//cout <

v.push_back(t);

}

}

}

int cmp(vector &v1,vector &v2)

{

int sz = min(v1.size(),v2.size())-1;

Up(i,0,sz)

{

if(v1[i] 

else if(v1[i] > v[2]) return 1;

else return 0;

}

}

int main()

{

ios::sync_with_stdio(false);

cin.tie(0),cout.tie(0);

string s1,s2;

while(cin >> s1 >> s2)

{

vector v1,v2;

split(v1,s1);   //分割字符串s1

split(v2,s2);   //分割字符串s2

//开始比较版本号大小

cout <

}

return 0;

}

发表于 2019-10-04 13:42:07

回复(0)

0

事实证明,C的效率最高

#include 

#include

int test(char *ptr1,char *ptr2)

{

if(atoi(ptr1)>atoi(ptr2))

return 1;

else if(atoi(ptr1)

return -1;

else

return 0;

}

int main()

{

char tmp;

char ver1[256];

char ver2[256];

scanf("%s",ver1);

scanf("%s",ver2);

char *ptr1 = ver1;

char *ptr2 = ver2;

int ret = 0;

int i = 0;

int j = 0;

int len1 =strlen(ver1);

int len2 = strlen(ver2);

while(i

{

while(ver1[i] != '.' && ver1[i] != '\0')

i++;

ver1[i] = '\0';

while(ver2[j] != '.' && ver2[j] != '\0')

j++;

ver2[j] = '\0';

ret = test(ptr1,ptr2);

if(ret == 1)

{

printf("1");

return 0;

}

else if(ret == -1)

{

printf("-1");

return 0;

}

i++;

j++;

ptr1 = ver1+i;

ptr2 = ver2+j;

}

if(len1 > len2)

printf("1");

else if(len1 

printf("-1");

else

printf("0");

}

发表于 2019-09-20 16:20:59

回复(0)

0

while(line = readline()){

var lines = line.split(" ");

var a = lines[0];

var b = lines[1];

var t = a.split(".");

var y = b.split(".");

var l1 = t.length;

var l2 = y.length;

for(i=0;i

t[i]= parseInt(t[i])

}

for(i=0;i

y[i]= parseInt(y[i])

}

var len = Math.min(l1,l2);

for(i=0;i

if(t[i]>y[i]){

print(1);

break;

}else if(t[i]

print(-1);

break;

}else if(t[i]==y[i]&&i

continue;

}else if(t[i]==y[i]&&i==len-1&&len==l1&&len==l2){

print(0)

}else if(t[i]==y[i]&&i==len-1&&len==l2){

print(1)

}else if(t[i]==y[i]&&i==len-1&&len==l1){

print(-1)

}

}

}

发表于 2019-09-03 10:52:34

回复(0)

0

var lines = readline().split(' ')

var str1 = lines[0]

var str2 = lines[1]

// console.log(str1,str2)

var version1 = str1.split('.')

var version2 = str2.split('.')

// console.log(version1)

var len = version1.length

for (var i = 0; i < len; i++) {

if(parseInt(version1[i])>parseInt(version2[i])){

console.log(1)

break

}else if(parseInt(version1[i])

console.log(-1)

break

}else {

continue

}

}

if((i===len)&&(version1[i-1]===version2[i-1])){

if(version1.length>version2.length){

console.log(1)

}else if (version1.length

console.log(-1)

} else{

console.log(0)

}

}

发表于 2019-08-20 14:31:07

回复(0)

0

if __name__=='__main__':

while True:

try:

ver1,ver2=raw_input().split()

ver1_list=map(int,ver1.split('.'))

ver2_list=map(int,ver2.split('.'))

flag=True

max_len=max(len(ver1_list),len(ver2_list))

ver1_list.extend([0 for i in range(max_len-len(ver1_list))])

ver2_list.extend([0 for i in range(max_len-len(ver2_list))])

for i in range(max_len):

if ver1_list[i]>ver2_list[i]:

print '1'

flag=False

break

if ver1_list[i]

print '-1'

flag=False

break

if flag==True:

print '0'

except:

break

发表于 2019-08-20 12:07:32

回复(0)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值