我目前正在为类编写Java代码,并且试图弄清楚如何在用户输入上实现运行长度编码。我遇到的主要问题是比较第一个字母与下一个字母,以及该字母与下一个字母,依此类推,以查看它们是否是同一字母。目前我有:
System.out.print("Enter a string: ");
String s1 = reader.nextLine();
int sum = 0;
char ast = '*';
//System.out.println("Run length encoded version of string: ");
for (int counter = 0; s1.charAt(counter) <= s1.length()-1; counter++) {
for (int j = 0; s1.charAt(counter) == s1.charAt(j)+1; j++) {
sum++;
counter++;
}
if (sum >= 4) {
System.out.print(ast + s1.charAt(counter) + sum);
}
else {
System.out.print(s1.charAt(counter));
}
}
我知道最大的问题出在哪里,为什么它不起作用,而是
for (int j = 0; s1.charAt(counter) == s1.charAt(j)+1; j++) {
sum++;
counter++;
}
段无限扩展。有适当的方法来做到这一点吗?教授提到,可以没有循环地完成它,尽管我可以看到它很短,但我可以看到它是不可能的。任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
String str="ayyusaab";
char[] ch=str.toCharArray();
for(int i=0;i<ch.length-1;i++){
for(int j=i+1;j<ch.length-1;j++){
if(ch[i]==ch[j]) {
System.out.println(ch[i]+" at Index "+i +"with j at "+j);
}
}
}