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

如何从字符串数组筛选字母有序单词并添加至List集合?

问题:筛选字母按顺序排列的单词

给定条件

  • 目标字符串数组:
string[] words = new string[5] { "abbey","billowy", "chills","abced","abcde" };
  • 期望输出结果:

abbey billowy chills abcde

错误实现代码

以下代码无法得到正确结果:

List<string> AlphabeticOrder = new List<string>();
foreach (var word in words)
{
    for (int i = 1; i < word.Length; i++)
    {
        if (word[i] < word[i - 1])
        {
            break;
        }
        AlphabeticOrder.Add(word);
        break;
    }
}

问题分析

原代码的核心错误是:仅检查到第一组相邻字符符合升序,就直接将单词加入列表并终止检查,没有验证所有相邻字符是否都满足非降序要求。比如abced的前几组字符符合升序,但最后一组d < e,原代码会错误将其加入列表,不符合需求。

正确实现方法

方法1:逐字符全量检查

List<string> AlphabeticOrder = new List<string>();
foreach (var word in words)
{
    bool isOrdered = true;
    // 遍历所有相邻字符对
    for (int i = 1; i < word.Length; i++)
    {
        if (word[i] < word[i - 1])
        {
            isOrdered = false;
            break;
        }
    }
    // 确认所有字符都符合顺序后再加入列表
    if (isOrdered)
    {
        AlphabeticOrder.Add(word);
    }
}
// 输出结果:string.Join(" ", AlphabeticOrder) → "abbey billowy chills abcde"

方法2:LINQ简化实现

如果熟悉LINQ,可以用更简洁的写法,逻辑是将单词字符排序后与原单词对比,完全一致则说明原单词是按字母顺序排列的:

using System.Linq;

List<string> AlphabeticOrder = words.Where(word => 
    word.SequenceEqual(word.OrderBy(c => c))
).ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:57:16