英语中有几个单词由字母组成,按字母顺序排列,即:hot、fry、fuzz、am、in、hoops 和 about。
我需要一种方法来检查单词中的字母是否满足上述规范。
我能想到的就是创建一个字母数组,并测试每个连续字母在字母数组中是否具有更高的索引。
英语中有几个单词由字母组成,按字母顺序排列,即:hot、fry、fuzz、am、in、hoops 和 about。
我需要一种方法来检查单词中的字母是否满足上述规范。
我能想到的就是创建一个字母数组,并测试每个连续字母在字母数组中是否具有更高的索引。
string s = "hoops";
bool inOrder = s == String.Join("", s.OrderBy(c => c));
或者
bool inOrder = s.SequenceEqual(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;
}
您可以使用这个简单的非 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;
}