英语中有几个单词由字母组成,这些单词按字母顺序排列,即:hot,fry,fuzz,am,in,hoops和almost。
我需要一种方法来检查单词中的字母是否满足上述规格。
所有我能想到的是创建一个字母数组,并测试每个连续字母在字母数组中是否有更高的索引。
答案 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;
}