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

如何高效识别字符串数组内的数值并统计其中奇数的数量?

优化字符串中奇数统计的方案

嗨,我来帮你搞定这个字符串奇数统计的优化问题~ 你之前想用嵌套循环手动切割字符串的方法确实有点繁琐,而且硬编码循环次数(比如固定5次)的扩展性也很差,下面给你几个更高效简洁的思路:

方案一:按空格分割后遍历统计(最推荐)

既然你的字符串是用空格分隔数字的,直接用字符串分割方法把所有数字拆出来,再逐个判断奇偶就行,完全不需要手动处理索引切割:

// 假设你的输入字符串是这样的
string numString = "37 42 44 61 62";
// 按空格分割,同时去掉可能的空字符串(比如首尾空格)
string[] numStrArray = numString.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
// 统计奇数个数
int oddCount = 0;
foreach (string s in numStrArray)
{
    if (int.TryParse(s, out int num) && num % 2 != 0)
    {
        oddCount++;
    }
}
// 或者用LINQ更简洁
// int oddCount = numStrArray.Count(s => int.TryParse(s, out int num) && num % 2 != 0);

这个方法的好处:

  • 不需要硬编码数字数量,哪怕字符串里的数字变多/变少,代码都不用改
  • 逻辑清晰,比嵌套循环切割可读性高太多
  • 用int.TryParse还能避免字符串里出现非数字内容导致的报错,更健壮

方案二:如果数字数量固定(比如就是5个),简化切割逻辑

如果你确定字符串里一定是5个数字,也可以不用嵌套循环,直接按空格分割后直接取对应元素判断,但本质上还是分割的思路,比手动切割索引简单:

string numString = "37 42 44 61 62";
string[] nums = numString.Split(' ');
int oddCount = 0;
// 直接遍历分割后的数组,不用嵌套循环
foreach (string numStr in nums)
{
    int num = int.Parse(numStr);
    if (num % 2 != 0) oddCount++;
}

为什么不推荐原来的嵌套循环切割?

原来的嵌套循环手动切割的问题在于:

  • 需要手动计算每个数字的起始和结束索引,容易出错(比如空格位置变化就会导致切割错误)
  • 硬编码了5次循环,扩展性差,要是以后数字数量变了,就得改循环次数
  • 代码可读性低,别人看半天才能明白你在做什么

所以不管从哪个角度看,用字符串分割的方法都比手动切割索引高效得多~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:57:13