2 回答

TA貢獻1852條經(jīng)驗 獲得超1個贊
您已經(jīng)快到了-比較結(jié)果為0(即值與上一個相同)時,您將執(zhí)行“嚴格遞增,不重復”和“遞增,允許重復”之間的唯一區(qū)別。
如果比較的結(jié)果不是,您只需要更改IsSortedAscending返回的方法即可:false>= 0> 0
public static bool IsSortedAscending(string[] arr)
{
for (int i = arr.Length - 2; i >= 0; i--)
{
// Fail if this ID is equal to or bigger than the next one.
if (arr[i].CompareTo(arr[i + 1]) >= 0)
{
return false;
}
}
return true;
}
(您也可以使用Skip和Zip作為另一種成對比較元素的方式,但這是稍有不同的事情。)
請注意,如果您的數(shù)字長度不同,當前您的代碼可能會失敗。例如,考慮ID“ bk99”和“ bk100”。它將比較“ 99”和“ 100”作為字符串,并確定“ 99”在“ 100”之后。
如果您的ID始終是真的“ bk”,后跟一個整數(shù),我會盡早解析它們:
var ids = myfile.Descendants("book")
.Select(a => a.Attribute("id").Value.Substring(2))
.Select(id => int.Parse(id))
.ToArray();
然后,您將更改方法以接受int[]而不是string[]。
到那時,檢查“缺失” ID也更容易-字符串形式,沒有“缺失” ID的真實概念,因為您可能會有“ bk101”,“ bk101a”,“ bk101c”-是“ bk101b” ”在那里不見了嗎?如果是這樣,那么“ bk101aa”呢?使用整數(shù),它要簡單得多。
獲得整數(shù)ID數(shù)組后,就可以使用數(shù)組的長度來檢查是否缺少任何值:
if (ids.Length > 0 ids.Length - 1 != ids.Last() - ids.First())
{
Console.WriteLine("At least one ID is missing");
}
誠然,那不會告訴您缺少哪個ID。
- 2 回答
- 0 關注
- 155 瀏覽
添加回答
舉報