String Three Finish

(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 }
View Code

(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 }
View Code

 解题思路:StringBuffer类的使用。

原文地址:https://www.cnblogs.com/struggleli/p/6228289.html