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

时间:2013-06-14 21:09:16

标签: c#

英语中有几个单词由字母组成,这些单词按字母顺序排列,即:hot,fry,fuzz,am,in,hoops和almost。

我需要一种方法来检查单词中的字母是否满足上述规格。

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

3 个答案:

答案 0 :(得分:17)

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

bool inOrder = s.SequenceEqual(s.OrderBy(c => c));

答案 1 :(得分:5)

其他答案会创建临时字符串,并且还会不必要地遍历所有字母。试试这个:)(我假设区分大小写并不重要)。

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;
}

答案 2 :(得分:0)

你可以使用这个简单的非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;
  }