有字符串 aaaabbbbccdeaa,要求输出为a4b4c2d1e1a2,我写的方法无法处理最后的那两个a,请高手指教!
public static void main(String[] args) {
String str = "aaaabbbbcdeaa";
char[] ss = str.toCharArray();
String s="";
char j; for (j = 'a'; j < 'z'; j++) {
int count = 0;
for (int i = 0; i < ss.length ; i++) {
if (ss[i] == j) {
count += 1;
} }
if(count!=0){
String sss=j+String.valueOf(count); s+=sss;
}
}
System.out.println(s); }
public static void main(String[] args) {
String str = "aaaabbbbcdeaa";
char[] ss = str.toCharArray();
String s="";
char j; for (j = 'a'; j < 'z'; j++) {
int count = 0;
for (int i = 0; i < ss.length ; i++) {
if (ss[i] == j) {
count += 1;
} }
if(count!=0){
String sss=j+String.valueOf(count); s+=sss;
}
}
System.out.println(s); }
* 简单的压缩算法实现。<br>
* 以字符加出现的次数进行压缩,比如输入为<br>
* aaaabbbbccdeaa<br>
* 输出为<br>
* a4b4c2d1e1a2
*
* @author Java人(javaren.org)
*/
public class TestCompress {
/**
* @param args
*/
public static void main(String[] args) {
String str = "aaaabbbbccdeaa";
char[] cs = str.toCharArray();
char last = 0;
int num = 0;
for (char c : cs) {
if (last == 0) {
last = c;
System.out.print(last);
num = 1;
} else {
if (c == last) {
num++;
} else {
System.out.print(num);
last = c;
System.out.print(last);
num = 1;
}
}
}
System.out.println(num);
}
}
根本不存在处理不了最后两个字符串这回事。
请楼主重新检察,如果使用类记事本编辑器,请确认字符编码是系统默认的字符编码。
String str = "aaaabbbbcdeaa";
Matcher m=Pattern.compile("([a-z])(\\1*)").matcher(str);
while(m.find())
System.out.print(m.group(1)+(m.group(2).length()+1));
for(int i=0;i<ss.length;){
j=ss[i];
int count = 1;
for(k=i+1;k<ss.length&&j==ss[k];k++){
count++;
}
s=s+j+count;
}
System.out.println(s);
public class Test {
public static void main(String[] args) {
String str = "aaaabbbbcdeaa";
StringBuffer strb = new StringBuffer();
char j = str.charAt(0);
int count = 1;
for(int i = 1; i < str.length(); i++){
//统计字符串相同字符个数
if(j == str.charAt(i))
count++;
else{
//不相同把字符和值加进strb
strb.append(j).append(count);
count = 1;
j = str.charAt(i);
}
}
//因为 最后一次没有加进strb
strb.append(j).append(count);
System.out.println(strb.toString());
}
}