1

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

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

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

4

3 回答 3

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

或者

bool inOrder = s.SequenceEqual(s.OrderBy(c => c));
于 2013-06-14T21:12:10.183 回答
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;
}
于 2013-06-14T21:20:12.570 回答
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;
  }
于 2013-06-14T21:23:40.770 回答