C♯の勉強

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

TopCoder SRM592: LittleElephantAndBalls

  
  ←← →→
  ↑ ↑

上の図のように、左右のキューのどちらかに追加していく。このときにすでにその色が入ってないキューに入れるようにすればよい。

public class LittleElephantAndBalls {
    public int getNumber(string S) {
        var left = new HashSet<char>();
        var right = new HashSet<char>();
        int ans = 0;
        foreach (var c in S) {
            ans += left.Count() + right.Count();
            if (!left.Contains(c)) left.Add(c);
            else if (!right.Contains(c)) right.Add(c);
        }
        return ans;
    }
}