java - 查找并显示字符串中的连续重复组合

标签 java string count set

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/

相关文章:

javascript - 整数和字符串 Javascript

Python - 以十六进制计数

sql - PostgreSQL "nested"?区分和计数

php - 计算一个文件在 PHP 中被下载了多少次

java - 如何将结果转发给 Struts2 中的另一个 Action ?

java - 使用 @ManyToMany 反序列化并持久化

c++ - CStringArray::GetAt(int index) 返回一个常量。为什么?

java - Firebase 将电子邮件链接到手机 : Cannot create PhoneAuthCredential without verificationProof

java - 在特定时间在android中调用一个 Action

javascript - 字符串中的替换不能按预期工作