Eg. Input : NaNaNaBCCBBNa Output : Na3 B1 C2 B2 Na1 Input : NaNaBCNaNaCBBNa Output : Na2 B1 C1 Na2 B2 Na1
我尝试这样做 使用选择排序类型技术
String input;
for (int i = 0; i < stringlength; i++) {
for (int j = 1 ; j < stringlength; j++) {
if (input.substring(i, i + 1).equals(input.substring(j, j + 1)) {
count++;
} else {
break;
}
}
userAnswer += input.substring(i, i + 1) + Integer.toString(count);
i = i + (count-1); // to skip repeated characters
}
我们必须计算集合数 集合被认为是一个大写字母 + 连续的下一个小字母(例如 Na NOT CC 或 BB 这些只是 C 或 B,没有小字符)
上面的代码是粗略的算法(有语法错误) 欢迎所有建议
终于解决了。
最佳答案
这就是我要使用的方法。在正则表达式上将字符串拆分为大写字母,然后我们将迭代这些项目并构建从元素到整数的映射。我们将添加或增加。完成后,为了清楚起见,我们可以使用 String.format();
浏览并打印出这些项目。
UPDATED the code had not counted correctly.
// Get User Input, replace my string with the users input below
String[] elementArray = "NaNaNaNaBBCCDDE".split("(?=[A-Z])");
Map<String, Integer> counts = new HashMap<>();
for(String element : elementArray){
Integer count = counts.get(element);
if(count == null){
counts.put(element, 1);
} else {
counts.replace(element, count + 1);
}
}
for(Map.Entry<String, Integer> mapEntry : counts.entrySet()){
System.out.println(String.format("Element: %s%d", mapEntry.getKey(), mapEntry.getValue()));
}
Output:
Success time: 0.11 memory: 320512 signal:0
Element: B2
Element: Na4
Element: C2
Element: D2
Element: E1
关于java - 查找并显示字符串中的连续重复组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37393552/