Compare Version Numbers
2016-06-09 06:22
225 查看
唉,今天想抽出时间太难了。。。
这道题让自己有了新知,对于点‘.’的字符串拆分要特殊处理
发现leetcode的测试数据不全面,存在一个Bug,自己最下面的提交有错误,在处理1.23.1和2.3时,返回了1,而非-1.
从新写code,还是走了第一次的方法最后。
public int compareVersion(String version1, String version2) {
if (version1 == null || version2 == null || version1.length() == 0 || version2.length() == 0 || version1.equals(version2)) {
return 0;
}
String[] str1 = version1.split("\\.");
String[] str2 = version2.split("\\.");
int i = 0;
for (; i < str1.length && i < str2.length; i++) {
int v1 = Integer.valueOf(str1[i]);
int v2 = Integer.valueOf(str2[i]);
if (v1 > v2) {
return 1;
} else if (v1 < v2) {
return -1;
}
}
if (str1.length > str2.length) {
for (; i < str1.length; i++) {
int v1 = Integer.valueOf(str1[i]);
if (v1 > 0) {
return 1;
}
}
} else if (str1.length < str2.length) {
for (; i < str2.length; i++) {
int v2 = Integer.valueOf(str2[i]);
if (v2 > 0) {
return -1;
}
}
}
return 0;
}
//另外,第一次的错误,问题出在了最后部分,简单的判断长度,会错判1.0和1的比较。
这道题让自己有了新知,对于点‘.’的字符串拆分要特殊处理
String[] str1 = version1.split("\\.");
发现leetcode的测试数据不全面,存在一个Bug,自己最下面的提交有错误,在处理1.23.1和2.3时,返回了1,而非-1.
从新写code,还是走了第一次的方法最后。
public int compareVersion(String version1, String version2) {
if (version1 == null || version2 == null || version1.length() == 0 || version2.length() == 0 || version1.equals(version2)) {
return 0;
}
String[] str1 = version1.split("\\.");
String[] str2 = version2.split("\\.");
int i = 0;
for (; i < str1.length && i < str2.length; i++) {
int v1 = Integer.valueOf(str1[i]);
int v2 = Integer.valueOf(str2[i]);
if (v1 > v2) {
return 1;
} else if (v1 < v2) {
return -1;
}
}
if (str1.length > str2.length) {
for (; i < str1.length; i++) {
int v1 = Integer.valueOf(str1[i]);
if (v1 > 0) {
return 1;
}
}
} else if (str1.length < str2.length) {
for (; i < str2.length; i++) {
int v2 = Integer.valueOf(str2[i]);
if (v2 > 0) {
return -1;
}
}
}
return 0;
}
//另外,第一次的错误,问题出在了最后部分,简单的判断长度,会错判1.0和1的比较。
public class Solution { public int compareVersion(String version1, String version2) { if (version1 == null || version2 == null || version1.length() == 0 || version2.length() == 0 || version1.equals(version2)) { return 0; } //String[] str1 = version1.split("."); //String[] str2 = version2.split("."); String[] str1 = version1.split("\\."); String[] str2 = version2.split("\\."); int length = Math.max(str1.length, str2.length); //for (int i = 0; i < str1.length && i < str2.length; i++) { int sum1 = 0, sum2 = 0; for (int i = 0; i < length; i++) { if (i < str1.length) { sum1 = (sum1 + Integer.valueOf(str1[i]))*10; } else { sum1 = (sum1)*10; } if (i < str2.length) { sum2 = (sum2 + Integer.valueOf(str2[i]))*10; } else { sum2 = (sum2)*10; } // if (v1 > v2) { // return 1; // } else if (v1 < v2) { // return -1; // } } if (sum1 > sum2) { return 1; } else if (sum1 < sum2){ return -1; } else { return 0; } } }
相关文章推荐
- linux cacti简单配置文档
- Maximum Depth of Binary Tree
- leecode_240 Search a 2D Matrix II
- Servlet & JSP 面试题
- 这些屌炸天的创业者为何对投资人说NO
- 顺为资本CEO许达来:为什么说中国创业者很幸福?(附PPT)
- 星瀚资本杨歌:我七次创业失败的内心感悟(比较真实,可以看看创业的36条军规)
- 晨兴资本刘芹:入行16年我才刚理解创投,有8个最深感悟
- Add Digits
- python 字符编码练习
- 实现统一社会信用代码校验
- 初见微服务之服务注册与发现
- ★【16.6.2】Codeforces Round #356 (Div. 2) C. Bear and Prime 100
- [CSS] Targeting Elements with CSS Attribute Selectors
- python3实现暴力穷举博客园密码
- [TypeScript] Using Exclude and RootDir until File Globs Lands in 2.0.
- [TypeScript] Loading Compiled TypeScript Files in Browser with SystemJS
- ★【16.6.2】Codeforces Round #356 (Div. 2) B. Bear and Finding Criminals
- 框架 day49 BOS项目练习3(修复window控件BUG,添加/修改/作废取派员,datagrid使用,分页查询(DetachedCriteria离线),formatter函数)
- [TypeScript] Stopping a TypeScript Build When Errors Are Found