C# 如何检查单词中的字母是否按字母顺序排列?

C# 如何检查单词中的字母是否按字母顺序排列?,c#,C#,英语中有几个单词是由字母组成的,它们按字母顺序排列,即:hot、fry、fuzz、am、in、hoops和几乎 我需要一种方法来检查一个单词中的字母是否符合上述规范 我所能想到的就是创建一个字母表数组,并测试每个连续字母在字母表数组中是否有更高的索引 string s = "hoops"; bool inOrder = s == String.Join("", s.OrderBy(c => c)); 或 或 其他答案创建临时字符串,并不必要地遍历所有字母。试试这个:我假设区分大小写无关紧

英语中有几个单词是由字母组成的,它们按字母顺序排列,即:hot、fry、fuzz、am、in、hoops和几乎

我需要一种方法来检查一个单词中的字母是否符合上述规范

我所能想到的就是创建一个字母表数组,并测试每个连续字母在字母表数组中是否有更高的索引

string s = "hoops";
bool inOrder = s == String.Join("", s.OrderBy(c => c));


其他答案创建临时字符串,并不必要地遍历所有字母。试试这个:我假设区分大小写无关紧要

bool LettersAreInAlphabeticalOrder(string word)
{
    for (int i = 1; i < word.Length; i++)
    {
        if (Char.ToLower(word[i]) < Char.ToLower(word[i - 1]))
        {
            return false;
        }
    }

    return true;
}

其他答案创建临时字符串,并不必要地遍历所有字母。试试这个:我假设区分大小写无关紧要

bool LettersAreInAlphabeticalOrder(string word)
{
    for (int i = 1; i < word.Length; i++)
    {
        if (Char.ToLower(word[i]) < Char.ToLower(word[i - 1]))
        {
            return false;
        }
    }

    return true;
}

您可以使用这个简单的非linq函数,以防像我一样使用.net 2.0,例如:

  private bool isAlphabetic(string toCheck)
  {
     toCheck = toCheck.ToLower();
     for (int i = 0; i < toCheck.Length; i++)
     {
        if (i+1 < toCheck.Length && toCheck[i] > toCheck[i + 1])
           return false;
     }

     return true;
  }

您可以使用这个简单的非linq函数,以防像我一样使用.net 2.0,例如:

  private bool isAlphabetic(string toCheck)
  {
     toCheck = toCheck.ToLower();
     for (int i = 0; i < toCheck.Length; i++)
     {
        if (i+1 < toCheck.Length && toCheck[i] > toCheck[i + 1])
           return false;
     }

     return true;
  }


您可以比较大于和小于的字符串。我会从开头开始,如果下一个字母的长度小于当前字母的长度,则返回false。请发布您拥有的代码。我还没有任何代码。在尝试之前,我正试图找到正确的方向。简单地说,你的字符串是一个字符数组,所以按字母顺序排序,看看它是否与原始字符串相同。当不在电话上时,我会发布解决方案。你只关心没有重音的拉丁字母吗?你可以比较大于和小于的字符串。我会从开头开始,如果下一个字母的长度小于当前字母的长度,则返回false。请发布您拥有的代码。我还没有任何代码。在尝试之前,我正试图找到正确的方向。简单地说,你的字符串是一个字符数组,所以按字母顺序排序,看看它是否与原始字符串相同。不在电话上时,我将发布解决方案您是否只关心没有重音的拉丁字母?+1用于非常巧妙的实现,但值得注意的是顺序区分大小写。正是我要做的+1在我的示例中,这个词是小写的。@RomanGusan您肯定应该将此标记为答案。解决方案是优雅的,最简单的+1对于非常巧妙的实现,但是值得注意的是顺序区分大小写。正是我要做的+1在我的示例中,单词是小写的。@RomanGusan您应该明确地将此标记为答案。解决方案是优雅的,最简单的!谢谢,这是一个较长的实现任务的方法,但是它完成了任务。它有点冗长,但是如果你有很多单词要处理,它会执行得更好。它避免了创建大量临时字符串,也避免了Onlogn排序:这提供了比字符串联接和LINQ函数更好的性能。谢谢,这是一种较长的实现任务的方法,但它完成了任务。它有点冗长,但如果您有很多字要处理,它的性能会更好。它避免了创建大量临时字符串,也避免了Onlogn排序:这提供了比字符串联接和LINQ函数更好的性能;i