题目一:移除字符串中连续出现的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 }