java - for 循环计算字符串中重复的字符数,然后删除重复的字符

标签 java string loops for-loop

示例:中午攻击 = a3t3c1k1 2n2o2

它也计算空格。 这是我所拥有的,但它似乎没有正确返回:

String getCount(String str) {
    String R = "";
    int l = S.length();
    int cnt = 1;

    for (int i = 0; i < l; i++)
        for (int j = i + 1; j < l; j++)
            if (S.charAt(j) == S.charAt(i)) {
                cnt++;
                R = R + S.charAt(i)+""+cnt;
                System.out.print(S.charAt(i) + cnt);
            }      
    return R;
}

最佳答案

如果字符串足够小,您不需要任何花哨的东西,只需暴力破解即可(对于 中午攻击,这将在 3 毫秒内运行)。

此代码将遍历所有字符,如果未找到,则将字符及其计数附加到 StringBuilder,然后在终止前打印。

import java.util.HashMap;

public class Counter {
    HashMap<String, Integer> counts;
    StringBuilder result;

    public static void main(String[] args) {
        Counter counter = new Counter();
        counter.countString("attack at noon");
    }

    void countString(String S) {
        counts = new HashMap<String, Integer>();
        result = new StringBuilder();

        String[] split = S.split("");
        for (int i = 1; i < split.length; i++) {
            String c = split[i];
            countChar(c, S);
        }
        System.out.println(result);
    }

    void countChar(String c, String s) {
        Integer integer = counts.get(c);
        if (integer == null) {
            int i = s.length() - s.replace(c, "").length();
            counts.put(c, i);
            result.append(c).append(i);
        }
    }
}

关于java - for 循环计算字符串中重复的字符数,然后删除重复的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22694217/

相关文章:

java - 删除 JDBC 创建的行李的正确方法?

java - 如何在 Java 中以正确的方式将 List<> 项目作为 POST 数据发送?

java - 迭代字符串列表以查看特定字符串是否存在于列表中的所有字符串中(Java/Groovy)

有人可以帮忙解释一下这个 C 算法在做什么吗?

swift - 如何将模式中包含其他文本的文本个性化并使用正则表达式对其进行编辑

c# - 异步循环内的异步函数

java - 遍历嵌套的括号内容

Java 8 - 在 stream.map() 中链接构造函数调用和 setter

java - 使用 Spock 在 Spy 对象中 stub 一个 void 方法

python - 如何从预先分割的字符串中获取列表?