C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

TopCoder SRM595: LittleElephantAndBallsAgain

全ての部分文字列を調べる。

SubString の代わりに SkipTakeを使うと配列外参照を気にしないで書ける。

public class LittleElephantAndBallsAgain {
    public int getNumber(string S) {
        return (from i in Enumerable.Range(0, S.Length)
                from j in Enumerable.Range(1, S.Length)
                let substring = S.Skip(i).Take(j)
                where substring.Distinct().Count() == 1
                select S.Length - substring.Count()).Min();
    }
}