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; } }