如果按字母順序排列,我應該接受一個字串并回傳 true。到目前為止,在我的解決方案中,我能夠從“abc”中得到正確的結果,但是像“aPple”這樣的詞會拋出錯誤。我假設這是因為某些字符大寫,但我不知道我哪里出錯了。這就是我所擁有的。
public bool IsAlphabetical(string s)
{
char[] c = s.ToCharArray();
Array.Sort(c);
return (c.SequenceEqual(s));
}
uj5u.com熱心網友回復:
如果你不需要區分大小寫的比較,你可以試試這個
public static bool IsAlphabetical(string s,bool checkWithoutCase=true)
{
var c = s.ToCharArray();
Array.Sort(c);
var equal = c.SequenceEqual(s);
// check without case
if (!equal && checkWithoutCase)
{
s = s.ToLower();
Array.Sort(c = s.ToCharArray());
equal = c.SequenceEqual(s);
}
return equal;
}
或 linq 變體(我不確定哪個更快)
public static bool IsAlphabetical(string s, bool checkWithoutCase=true, bool checkWithCase=true)
{
var equal=false;
if (checkWithCase) equal= s.OrderBy(x => x).SequenceEqual(s);
// check without case
if (!equal && checkWithoutCase)
{
s=s.ToLower();
equal = s.OrderBy(x => x).SequenceEqual(s);
}
return equal;
}
uj5u.com熱心網友回復:
我認為LINQ和陣列排序太多了。快速性能檢查證明 https://dotnetfiddle.net/eoKP7Z
public static bool IsAlphabetical(string s, bool checkWithoutCase = true)
{
var comparisonType = checkWithoutCase ?
System.StringComparison.OrdinalIgnoreCase :
System.StringComparison.Ordinal;
for (var idx = 1; idx < s.Length; idx )
{
if (string.Compare(s, idx - 1, s, idx, 1, comparisonType) > 0)
{
return false;
}
}
return true;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/385180.html
下一篇:如何測驗使用的命令列引數?
