给定一个字符串str,返回str的统计字符串。例如“aaabbbbcccd”的统计字符串为“a_3_b_4_c_3_d_1”。理解:给定一个字符串,输出连续重复字符的个数
例:
输入:offerofferzainaliiiiii
输出:o_1_f_2_e_1_r_1_o_1_f_2_e_1_r_1_z_1_a_1_i_1_n_1_a_1_l_1_i_6
import java.io.*;
public class Main{
public static void main (String[] args)throws IOException{
//1.读取键盘输入
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String s = bf.readLine();
System.out.println(procrss(s));
}
//方法
public static String procrss(String str){
//1.如果输入为null空类型变量或者空字符串,返回“”
if(str.equals("")||str==null){
return "";
}
//2.定义缓冲区
StringBuffer sbr = new StringBuffer();
//3.第一个位置的字符赋值给c
char c = str.charAt(0);
//定义计数器,
int count =1;
//循环做比较
for(int i=1;i<str.length();i++){
if(c==str.charAt(i)){
count++;//里面有和c指向一样的值的话,那么计数加1
}
else{
//当不符合,把之前符合的加入字符缓冲区里
sbr.append(c+"_"+count+"_");
count = 1;//当不符合的时候,意味着,当前比较的值的个数至少是1
c = str.charAt(i);//第i+1个位置上的字符,因为是从0计数的
}
}
//在计算完所有字符后,即:i=str.length的时候,就跳出了for循环
//这个时候,把最后一个字符的统计信息加入到缓冲区
sbr.append(c+"_"+count);
return sbr.toString();
}
}
3405

被折叠的 条评论
为什么被折叠?



