码迷,mamicode.com
首页 > 其他好文 > 详细

华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。

时间:2014-09-09 11:31:18      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   java   ar   for   div   sp   log   

 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 stub
13         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。

标签:style   blog   color   java   ar   for   div   sp   log   

原文地址:http://www.cnblogs.com/hansongjiang/p/3961740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!