java - 如何使用 Java 找到后续字符的出现?
问题描述
我是java的新手。我了解如何使用 for 循环遍历字符串并计算 char 出现的次数。如果我有一个名为 x 的字符串被初始化为“aaabbbcccaaa”,我希望我的程序告诉我有 3a,然后是 3b,然后是 3c,然后是 3a。所以它会输出类似 3a3b3c3a 的东西。
我有以下代码:
public class ConsequentChars{
public static String chars ( String x ){
int len = x.length();
String charOccurs = "";
int count = 0;
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
if(x.charAt(i)==x.charAt(j)){
count++;
}
}
charOccurs+=Integer.toString(count)+x.charAt(i);
count = 0;
}
return rle;
}
public static void main(String[] args){
System.out.println(chars("aaaaabbbbcccdde"));
}
}
从上面的代码我得到:
5a5a5a5a5a4b4b4b4b3c3c3c2d2d1e
.
什么时候应该:
5a4b3c2d1e
.
我不确定我能做些什么来解决这个问题。我很感激任何帮助:)
解决方案
在您的代码中,问题在于对于每个字符,您要继续计算该字符在字符串中出现的次数。因此,对于字符串“aabab”,您从第一个 'a' 开始,并计算 'a' 在整个字符串中出现的次数,并将其设为“a3”。但是然后,你转到下一个字符串,做同样的事情,你计算 'a' 在整个字符串中出现的次数,仍然是 3,使你的字符串现在是“a3a3”。为了解决此问题,您将需要停止此重复步骤。如果你想维护你当前的代码来学习,我建议你保留一个你已经打印出来的字符列表,并确保不要再次打印出来。所以,在第一个 for 循环中,你想要类似的东西
if(character hasn't appeared before){
count the number of time it has appeared and append it to the output `
}
有更好的方法来解决这个问题,但现在修改你当前的代码可能会带来最好的学习体验。
推荐阅读
- ios - 从 API 传递的图像未在页面浏览容器中快速显示
- c++ - 构造函数中的weak_from_this()
- javascript - Issue with storing and recalling cookies Javascript
- react-native - onPress 功能不起作用
- sql-server - 如何从本地实例查询/插入 - Azure SQL Server
- java - Spring Boot login error
- csv - NullPointerException while load csv using neo4j's apoc.periodic.iterate procedure
- vb.net - 保存 Word 文档导致“命令失败”
- c# - Using JsonConvert.DeserializeObject on JSON with dynamic object name
- sql-server - SQL - 在需要字符串的地方使用参数