Pre-defined Methods
- 把String分割的方法
String delims = "[.]"; //"12.3.2" => ["12", "3", "2"]
String[] tokens = _String.split(delims);
或者是 String[] v1 = version1.split("\\.");
While in python or ruby, ‘.’ is enough.
- char变成int的方法
int currDigit = Integer.parseInt(tokens[i]);
或者是(version1.charAt(i1) - '0')
Logic Flaws:
- version.length() 与 version1.split(delim)的长度不一样,没有共同点
- for循环里面,如果号码相同,应该比较string[]的下一个item而不是返回0
Failed Test Cases
- “1” and “1.1” as tokensShort[i].equals(null) does not work if index goes beyond. Actuallly only i == tokensShort.length is enough
- “1” and “1.0” should be same
- This problem wastes us time by not clarifying the behavior such as leading 0
待研究
- 每次两个arguments的长短都会和循环有关,而赋值了谁长谁短又不晓得的哪个才是。这个问题有待研究。
思路
- 将string分为array之后挨个比
- 但是没有想到“1.00.0.0”和“1.0”之间的对比
Comparion by digits and each version number in String
看了https://discuss.leetcode.com/topic/48167/my-0ms-java-solution重做了另一版
Logic Flaws:
- 最大while循环末位没有reset ver1和ver2为0;还是没有想清楚ver1和ver2的用处
- i1 i2两个index是用的比较巧妙的地方,内循环用来加ver,外循环用来过’.’ 所以以后当delimer为一个char的时候都可以想到这个方法
思路
- 直接用index来遍历整个string
- 每到分隔符的时候停下,计算每个substring的大小
- 比较两个substrings大小,并index++跳过分隔符
- 同时substring的大小数值重新归零
- 用到了方法一的两个经验:
- substring(subversion)的数目可能会不同
- subversion的长度不同不一定数值不同,leading 0