去掉字符串中连接出现的k次的0
思路: 先将字符串转成字符数组,遍历每个字符,每次遍历先将字符 char c = arr[i];
,然后判断是否为0,如果为0则count++,否则就查看你是否出现k次,如果出现过k次就把k次移除只留余数装进sb中,不然就装进字符且重置count=0。记住还要考虑最后的count问题!
import org.assertj.core.api.Assertions;
/*
* 移除字符串中连续出现的K个0
*
* 可以用扫描字符数组的解法,但是用正则表达式更为快捷
* */
public class 去掉字符串中连接出现的k次的0 {
static String remove(String iniString, int k) {
String regexp = "0{" + k + "}";
return iniString.replaceAll(regexp,"");
}
static String remove1(String iniString, int k) {
char[] arr = iniString.toCharArray();
int count = 0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
char c = arr[i];
if (c == '0'){
count++;
} else {
for (int j = 0; j < count % k; j++){
sb.append('0');
}
sb.append(c);
count = 0;
}
}
for (int j = 0; j < count % k; j++){
sb.append('0');
}
return sb.toString();
}
public static void main(String[] args){
Assertions.assertThat(remove1("A00000B00",3)).isEqualTo("A00B00");
}
}