字符串----基础训练(三)

题目一:移除字符串中连续出现的K个0。

代码:

 1 /**
 2  * 移除字符串中连续出现的k个0
 3  * @author xiaow
 4  * 
 5  * 可以用扫描字符数组的解法,但是用正则表达式更为快捷
 6  *
 7  */
 8 public class RemoveKZeros {
 9 
10     static String remove_1(String src,int k){
11         String regex = "0{"+k+"}";
12         return src.replaceAll(regex, "");
13     }
14     
15     static String remove_2(String src,int k){
16         char[]arr = src.toCharArray();
17         int count = 0;
18         StringBuilder sb = new StringBuilder();
19         for (int i = 0; i < arr.length; i++) {
20             char c = arr[i];
21             if (c == '0') {
22                 count++;
23             }else {
24                 for (int j = 0; j < count%k; j++) {
25                     sb.append('0');
26                 }
27                 sb.append(c);
28                 count = 0;
29             }
30         }
31         for (int j = 0; j < count%k; j++) {
32             sb.append('0');
33         }
34         return sb.toString();
35     }
36     
37     public static void main(String[] args) {
38         System.out.println(remove_1("10000200", 3));
39         System.out.println(remove_2("10000200", 4));
40         /*
41          * 输出:10200
42          *      1200
43          */
44     }
45 
46 }

题目二:回文字符串。

代码:

 1 public class Palindrome {
 2 
 3     public static void main(String[] args) {
 4         System.out.println(isPalindrome("abcba"));
 5     }
 6     
 7     static boolean isPalindrome(String src){
 8         if (src.isEmpty()) {
 9             return true;
10         }
11         // 翻转后和自己相同---回文字符串
12         return src.equals(new StringBuilder(src).reverse().toString());
13     }
14 
15 }
posted @ 2019-01-22 22:28  |旧市拾荒|  阅读(275)  评论(0编辑  收藏  举报