字符串的统计字符串

来源:互联网 发布:韩国后悔废除汉字 知乎 编辑:程序博客网 时间:2024/05/17 18:26

题目一:

给定一个字符串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:

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

原创粉丝点击