菜鸡zoom被虐记
单选20*2 多选10*3 2道编程题
编程题1:输入一个字符串和一个整数m,去除其中m个'0',如CD00P000,m=2 输出:CDP000。
现场笔试没过,下来搞了半个小时 才做出来,真的菜啊。
下面直接上代码:
import java.util.Scanner; public class leetcode{ public static void main(String[] args) { Scanner in = new Scanner(System.in); String str=in.nextLine(); int m=in.nextInt(); int tem=0; //记录相同字符‘0’连续出现的次数。 for (int i=0;i<str.length();i++){ if (tem==0&&str.charAt(i)=='0') //3种情况分别对tem处理 tem=1; else if (tem!=0&&str.charAt(i)=='0') tem++; else if (tem!=0&&str.charAt(i)!='0') tem=0; if (tem==m&&i==str.length()-1) //边界情况,防止越界 str = str.substring(0, i - m + 1); else if(tem==m&&str.charAt(i+1)!='0'&&i<str.length()-1) { str = str.substring(0, i - m + 1).concat(str.substring(i + 1)); i=0; //从0开始搜索,不然容易在尾端出现错误 tem=0; } } System.out.println(str); } }
PS:str.substring(start,end)取start-(end-1)中间字符串;str.substring(start)取start开始至字符串末尾的子串,切记不可写成str.substring(start,end+1);数组会越界
不知道有没有更好的解法,仅供参考。