题目链接:https://leetcode.com/problems/compare-version-numbers/
一大早看到如此简单的题似乎膨胀了,这个不就是字符串排序(比较)的子问题嘛,比较一下就完了,于是咔咔咔写出了下面的无脑代码:
class Solution {
public int compareVersion(String version1, String version2) {
int minLength=Math.min(version1.length(),version2.length());
int i=0;
for(;i<minLength;i++)
{
if(version1.charAt(i)<version2.charAt(i))
return -1;
else if(version1.charAt(i)>version2.charAt(i))
return 1;
}
if(version1.length()>i)
return 1;
if(version2.length()>i)
return -1;
return 0;
}
}
submit后就wrong了,真是naive,根本就没有考虑字符串表达的数字前面可以0开头,应该。
于是决定将字符串转化成整数进行比较,想了下面的代码:
class Solution {
public int compareVersion(String version1, String version2) {
String[] v1=version1.split("\\.");
String[] v2=version2.split("\\.");
int minBlock=Math.min(v1.length,v2.length);
int i=0;
for(;i<minBlock;i++)
{
int a=Integer.parseInt(v1[i]);
int b=Integer.parseInt(v2[i]);
if(a<b)
return -1;
else if(a>b)
return 1;
else
continue;
}
if(v1.length>i)
{
while(i<v1.length)
{
if(Integer.parseInt(v1[i])!=0)
return 1;
i++;
}
return 0;
}
if(v2.length>i)
{
while(i<v2.length)
{
if(Integer.parseInt(v2[i])!=0)
return -1;
i++;
}
return 0;
}
return 0;
}
}
水平真是菜鸡!!!