为了账号安全,请及时绑定邮箱和手机立即绑定

计算字符串中字符出现的简单方法

计算字符串中字符出现的简单方法

慕森卡 2019-11-18 12:46:16
是否有一种简单的方法(而不是手动遍历所有字符串,或遍历indexOf)以查找字符出现在字符串中的次数?假设我们有“ abdsd3 $ asda $ asasdd $ sadas”,我们希望$出现3次。
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

public int countChar(String str, char c)

{

    int count = 0;


    for(int i=0; i < str.length(); i++)

    {    if(str.charAt(i) == c)

            count++;

    }


    return count;

}

这绝对是最快的方法。正则表达式在这里要慢得多,并且可能很难理解。


查看完整回答
反对 回复 2019-11-18
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

不是最佳方法,而是简单的计数发生次数的方法:


String s = "...";

int counter = s.split("\\$", -1).length - 1;

注意:


美元符号是特殊的正则表达式符号,因此必须以反斜杠转义。

反斜杠是转义字符(例如换行符)的特殊符号,因此必须使用反斜杠对其进行转义。

split的第二个参数可防止删除空的尾随字符串。


查看完整回答
反对 回复 2019-11-18
?
慕森王

TA贡献1777条经验 获得超3个赞

由于无论如何都要扫描整个字符串,因此您可以建立完整的字符计数并进行任意数量的查找,而所有操作均以相同的高成本(n)进行:


public static Map<Character,Integer> getCharFreq(String s) {

  Map<Character,Integer> charFreq = new HashMap<Character,Integer>();

  if (s != null) {

    for (Character c : s.toCharArray()) {

      Integer count = charFreq.get(c);

      int newCount = (count==null ? 1 : count+1);

      charFreq.put(c, newCount);

    }

  }

  return charFreq;

}


// ...

String s = "abdsd3$asda$asasdd$sadas";

Map counts = getCharFreq(s);

counts.get('$'); // => 3

counts.get('a'); // => 7

counts.get('s'); // => 6


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 339 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信