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

复杂回文字符串校验问题:IsPalindrome方法适配优化需求

回文校验方法修改方案

原方法的核心问题是仅跳过空格,未过滤标点符号,导致标点被纳入字符统计,使得奇数次数的字符数量超过1,从而返回错误的false结果。要解决这个问题,只需在遍历字符时,只保留字母字符,自动忽略所有非字母(包括标点、空格等)。

修改后的完整代码

public bool IsPalindrome(PalindromeModel model)
{
    // 检查输入是否为空或仅含空白字符
    if (string.IsNullOrWhiteSpace(model.Value))
        return false;

    var inputDict = new Dictionary<char, int>();
    var lowerInputStr = model.Value.ToLower();

    // 仅统计字母字符,自动跳过标点、空格等非字母内容
    for (var i = 0; i < lowerInputStr.Length; i++)
    {
        char currentChar = lowerInputStr[i];
        if (char.IsLetter(currentChar))
        {
            if (inputDict.ContainsKey(currentChar))
                inputDict[currentChar] += 1;
            else
                inputDict.Add(currentChar, 1);
        }
    }

    var countOdds = 0;
    foreach (var elem in inputDict)
    {
        if (elem.Value % 2 != 0)
            countOdds++;
    }

    // 回文的核心条件:最多一个字符出现奇数次
    return countOdds <= 1;
}

修改说明

  • 替换了原代码中判断空格的逻辑,改用char.IsLetter(currentChar)筛选字符,确保只有字母被统计,自动忽略标点、空格、数字等无关字符。
  • 保留原有的大小写不敏感处理(转小写),以及回文判断的核心逻辑(奇数次数字符≤1)不变。

测试Mr. Owl Ate My Metal Worm时,会自动过滤掉.和空格,仅统计字母的出现次数,最终满足回文条件返回true。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:55:28