java字符串问题

javazsy 2009-09-24 05:44:35
有字符串 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);

}
...全文
111 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
javazsy 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 longds7 的回复:]
Java codepublicclass Test {publicstaticvoid main(String[] args) {
String str="aaaabbbbcdeaa";
StringBuffer strb=new StringBuffer();char j= str.charAt(0);int count=1;for(int i=1; i< str¡­
[/Quote]
对的,可惜没分给了,不好意思!
longds7 2009-09-24
  • 打赏
  • 举报
回复

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());
}
}
cuifanghua 2009-09-24
  • 打赏
  • 举报
回复
刚才没考虑清楚,不好意思。我感觉逻辑应该是这样的:
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);

javazsy 2009-09-24
  • 打赏
  • 举报
回复
也谢谢其他热心的人,小弟多谢了!
cuifanghua 2009-09-24
  • 打赏
  • 举报
回复
方法本身就有问题,你应该把两个for循环的条件换一下
javazsy 2009-09-24
  • 打赏
  • 举报
回复
我记得有正则表达式可以处理的,忘记了!多谢java2000_net和hbgzg3006两位大哥了!
struggle_tomorrow 2009-09-24
  • 打赏
  • 举报
回复
你写的那个类是检查从a到z个有多少个,没有管是否连续。而你要的是输出连续字母的个数。
hbgzg3006 2009-09-24
  • 打赏
  • 举报
回复

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));
filemon 2009-09-24
  • 打赏
  • 举报
回复
绝无此事,本来粘在记事本中,只加了个class Test,编译运行,结果是:a6b4c1d1e1
根本不存在处理不了最后两个字符串这回事。
请楼主重新检察,如果使用类记事本编辑器,请确认字符编码是系统默认的字符编码。
老紫竹 2009-09-24
  • 打赏
  • 举报
回复
/**
* 简单的压缩算法实现。<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);
}
}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧