(1)Compare Version Numbers
解题思路:把字符串分割成字符串数组,然后取两个字符串数组的最大长度,从数组的第一个元素开始比较,注意把String型转换成Int型(Integer.parseInt)进行比较。
代码如下:
1 public class Solution { 2 public int compareVersion(String version1, String version2) { 3 String[] v1 = version1.split("\."); 4 String[] v2 = version2.split("\."); 5 6 int longest = v1.length > v2.length ? v1.length : v2.length; 7 8 for(int i=0; i<longest; i++) 9 { 10 int ver1 = i < v1.length ? Integer.parseInt(v1[i]) : 0; 11 int ver2 = i < v2.length ? Integer.parseInt(v2[i]) : 0; 12 13 if(ver1 > ver2) return 1; 14 if(ver1 < ver2) return -1; 15 } 16 return 0; 17 } 18 }
(2)ZigZag Conversion
代码如下:
1 public class Solution { 2 public String convert(String s, int numRows) { 3 char[] c = s.toCharArray();//字符串转换成字符数组 4 int len = c.length; 5 StringBuffer[] sb = new StringBuffer[numRows]; 6 for (int i = 0; i < sb.length; i++) { 7 sb[i] = new StringBuffer(); 8 } 9 10 int i = 0; 11 while (i < len) { 12 for (int idx = 0; idx < numRows && i < len; idx++) // 垂直向下 13 sb[idx].append(c[i++]); 14 for (int idx = numRows-2; idx >= 1 && i < len; idx--) // 倾斜向上 15 sb[idx].append(c[i++]); 16 } 17 for (int idx = 1; idx < sb.length; idx++) 18 sb[0].append(sb[idx]); 19 return sb[0].toString(); 20 } 21 }
解题思路:StringBuffer类的使用。