首页 > 代码库 > 华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。
华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。
1 package 华为机试; 2 //C++ 输入:由数字和字母组成的字符串,例如:333aaabb55ppin 3 //输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。 4 5 //这句话的核心就是在字符串删除一些字符,感觉处理很复杂,删除哪些字符呢?我们观察发现, 本字符串中删除了一个3,一个a,一个p,满足的规则是啥呢? 333中删除最后一个3,3aa删除了一个a,5pp中删除一个p, 6 //规则就是如果这个字符前面2个是数字,前面一个字符跟他一样,则删除。 7 import java.util.Scanner; 8 9 public class Main6 {10 11 public static void main(String[] args) {12 // TODO Auto-generated method stub13 Scanner scn=new Scanner(System.in);14 while(scn.hasNext())15 {16 char c1[]=scn.next().toCharArray();17 char c2[]=new char[c1.length];18 c2[0]=c1[0];19 c2[1]=c1[1];20 //前两个字符肯定不能被删除21 int index=2;//没有删除的字符复制到新的字符数组,22 for(int i=2;i<c1.length;i++)23 {24 if(c1[i]==c1[i-1]&&( c1[i-2]>=‘0‘&&c1[i-2]<=‘9‘)) continue; //满足条件,删除25 c2[index++]=c1[i];//不满足条件,复制到c2数组26 27 28 29 30 }31 32 String ans="";33 for(char c3:c2)34 {35 ans+=c3;36 }37 38 System.out.println(ans);39 }40 41 }42 43 }
华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。