字符串的统计字符串

题目一:

给定一个字符串str,返回其统计字符串,
例如String s=”aaabbadddffc”;其统计字符串形式为”a_3_b_2_a_1_d_3_f_2_c_1“。

题目二:

给定一个字符串的统计字符串,再给定一个整数,返回原始字符串上该整数上的字符。
例如”a_1_b_100”,0返回‘a’,100返回‘b’

public class demo {
    public static void main(String[] args) {
        char res=returnChar("a_1_b_100",0);
        System.out.println(res);    
        }

    //字符串的统计字符串
    public static String count(String str){
        if(str==null||str.equals("")){
            return str;
        }
        char[] chas=str.toCharArray();
        String res="";
        int index=0;
        for(int i=0;i<chas.length;i++){
            if(chas[index]!=chas[i]){               
                res+=String.valueOf(chas[index])+"_"+String.valueOf(i-index)+"_";
                index=i;
            }
        }
        res+=String.valueOf(chas[index])+"_"+String.valueOf(chas.length-index);
        return res;
    }

    //给定统计字符串cstr和整数index,返回cstr原始字符串中第index个字符
    public static char returnChar(String cstr,int index){
        if(cstr==null||cstr.equals("")){
            return 0;
        }
        int num=0;//当前字符个数
        int sum=0;//当前总字符
        boolean stage=true;//代表遇到字符阶段,反之是统计字符阶段
        char cur=0;//当前字符
        char[] chas=cstr.toCharArray();
        for(int i=0;i<chas.length;i++){
            if(chas[i]=='_'){
                stage=!stage;//变阶段
            }
            else if(stage){//遇到下一个字符了,该计入sum了,判断是否返回值
                sum+=num;
                if(sum>index){
                    return cur;
                } 
                num=0;
                cur=chas[i];//存新字符,清num0
            }
            else{//统计阶段
                num=num*10+(chas[i]-'0');
            }
            }
        return sum+num>index?cur:0;//最后一次单独看
    }
    }

PS:

第一次独立正确完成一道题~
虽然第二题还是被解析搞得晕乎乎…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值