相关疑难解决方法(0)

如何计算字符串中字符的频率?

我需要编写某种循环来计算字符串中每个字母的频率.
例如:"aasjjikkk"将计为2'a',1'',2'j',1'i',3'k'.最终像这样的id最终会出现在一个地图中,其中字符为键,计数为值.有什么好主意怎么做?

java string key-value

29
推荐指数
4
解决办法
10万
查看次数

空间复杂性示例

所以我想知道在for循环中何时创建对象(或基元),这对空间复杂性有何影响?

例如,下面是一个代码示例:

public boolean checkUnique(String p){
    int term = -1;
    int len = p.length();
    for (int i =0; i<len; i++) {
        char c = p.charAt(i);
        StringBuilder sb = new StringBuilder(p.substring(0, i));
        sb.append(p.substring(i+1, len));
        String str = sb.toString();
        if (str.indexOf(c) != term) {
            return false; 
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

所以我试图分析这个算法的空间复杂性.它看起来像是O(n).这是我的推理:迭代次数等于输入大小,并且在每次迭代中我们创建一个StringBuilder对象,因此我们创建与输入大小成比例的StringBuilder对象.同样的推理可以应用于我们在每次迭代时创建String对象和char的事实.这个推理是否正确?

我问的原因是因为我遇到了一种算法,在每次迭代后进行以下赋值:

int val = str.charAt(i);
Run Code Online (Sandbox Code Playgroud)

然而,该算法具有O(1)空间复杂度.所以我的理解一定不正确呢?在这种情况下,checkUnique算法的空间复杂度也为O(1).

java algorithm big-o space-complexity

3
推荐指数
1
解决办法
1027
查看次数

标签 统计

java ×2

algorithm ×1

big-o ×1

key-value ×1

space-complexity ×1

string ×1