You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更高效统计字符串中从9降序查找的指定数字的出现次数

实现方案

基础循环实现(可读性最高,性能最优)

直接从9倒序遍历到1,匹配到第一个存在的数字后直接统计次数执行业务逻辑即可,完全不需要冗余的分支判断。你原有代码外层的foreach遍历是冗余的,统计整个字符串中指定字符的出现次数不需要逐个遍历外层字符,该实现已经去掉了该冗余逻辑:

string test = "987652349";
int count = 0;

// 从9开始向下遍历到1
for (int num = 9; num >= 1; num--)
{
    char target = num.ToString()[0];
    if (test.Contains(target))
    {
        count = test.Count(c => c == target);
        // 此处写入你的后续业务逻辑
        break; // 匹配到最高优先级的数字后直接终止循环
    }
}

LINQ 简洁写法

如果偏好函数式写法,可以用LINQ完成逻辑,注意如果存在字符串中完全没有1-9的场景,可把First改为FirstOrDefault,后续加空判断即可:

string test = "987652349";
var (targetNum, count) = Enumerable.Range(1, 9)
                                   .Reverse()
                                   .Select(n => (n, test.Count(c => c == n.ToString()[0])))
                                   .First(res => res.Item2 > 0);

// 此处写入你的后续业务逻辑

方案优势

  • 无冗余分支代码,逻辑清晰易维护,需要调整查找范围(比如改从8开始、或者查到0为止)只需要修改遍历的起止值即可
  • 性能优于原有写法:原有写法每次Contains和Count都会单独遍历字符串,该方案匹配到第一个符合条件的数字就终止操作,减少不必要的遍历
  • 不存在漏判风险:原有手写if分支如果漏写某个数字就会出现逻辑漏洞,循环实现完全避免了该问题

内容的提问来源于stack exchange,提问作者xvirtue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:57:03