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

字符串问题之 字符串的统计字符串

时间:2017-08-19 18:27:30      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:bad   img   过程   str   返回   ati   控制   char   har   

问题1、给定一个字符串str, 返回str的统计字符串,

例如: “aaabbadddffc”的统计字符串为“a_3_b_2_a_1_d_3_f_2_c_1”

进阶题目:

 给定一个统计字符串cstr, 在给定一个整数inde  返回代表的字符

问题2、例如: "a_1_b_100"  index=50的字符是’b‘

 

 

问题1思路:

      str为空,则统计字符串不存在

      str不为空,首先生成String类型res,表示统计字符串,num表示数量(初始位置:str[0], nim=1)

     不停的遍历 就是看看 str[i]跟str[i-1]的关系 等于num++  不等于则 res=res+"_"+num+"_"+str[i](把当前的加入哈) 然后num=1 继续遍历~~~~~

     写入num的条件是发现新字符时候,此时一定要注意!!! 当遍历结束时候!

 

    

package TT;

public class Test3 {
 
    public  static String getCountString(String str){
        
          if(str==null || str.equals("")){
               return "";
          }
          char[] chs = str.toCharArray();
          
          String res= String.valueOf(chs[0]);
          int num=1;
          
          
          for(int i =1; i<chs.length; i++){
               if(chs[i]!=chs[i-1]){
                   res = concat(res, String.valueOf(num), String.valueOf(chs[i]));
                   num=1;
               }else{
                   num++;
               }
          }
          
          return  concat(res, String.valueOf(num),"");
          
    }
    
    
     public static String concat(String s1, String s2, String s3){
         return s1+"_"+s2+(s3.equals("")?s3:"_"+s3);
     }
     
     
     public static void main(String[] args)    {
         
           String str  = "aaabbadddffc";
           String s = getCountString(str);
           System.out.println(s);
         
     } 
     
     
     

     
}

结果:

技术分享

 

问题2

 解题过程

  1 boolean stage   控制进入哪个状态  true代表字符阶段    false代表遇到连续字符统计阶段  初始时候 stage=true   cur=0 num=0 sum=0

     比较sum跟index的关系

上代码:

package TT;


public class Test3 {
 
    public static char getCharAt(String cstr, int index){
           if(cstr ==null || cstr.equals("")){
                return 0;
           }
           
           char[] chs=cstr.toCharArray();
           boolean stage = true;
           char cur = 0;
           int num = 0;
           int sum=0;
           for(int i =0; i!=chs.length; i++){
               if(chs[i]==‘_‘){
                    stage =!stage;
               }else if(stage){
                   sum +=num;
                   if(sum > index){
                       return cur;
                   }
                   num =0;
                   cur = chs[i];
               }else{
                   num = num*10+chs[i]-‘0‘;
               }
           }
           
           return sum+num>index?cur:0;
           
    }
     
    public static void main(String[] args){
        String cstr ="a_1_b_100";
        int index = 50;
        char a = getCharAt(cstr, index);
        System.out.println(a);
    }
    
    
    
}

结果:

技术分享

 

  

 

字符串问题之 字符串的统计字符串

标签:bad   img   过程   str   返回   ati   控制   char   har   

原文地址:http://www.cnblogs.com/toov5/p/7397159.html

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