Codility – Lesson 7 Stacks and Queues – Brackets
プログラミング能力を評価するオンラインテスト、Codilityで、Lesson 7 Stacks and Queues – Bracketsに回答しました。
問題と結果画面
100%の評価。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
using System; using System.Linq; class Solution { public int solution(string S) { // Console.WriteLine("S : " + S); S = S.Replace('(','2'); S = S.Replace(')','3'); S = S.Replace('[','4'); S = S.Replace(']','5'); S = S.Replace('{','6'); S = S.Replace('}','7'); int[] s = S.Select(a => a - '0').ToArray(); int N = s.Length; int result = 0; for(int i = 0; i < N; i++) { if(s[i] % 2 == 0 && i + 1 < N && s[i + 1] % 2 == 1 && s[i + 1] != (s[i] + 1)) return 0; } for(int i = 1; i < 4; i++) { int tgt = i * 2; // Console.WriteLine("tgt : " + tgt); for(int j = 0; j < N; j++) { // Console.WriteLine("s[j] : " + s[j]); // Console.WriteLine("result : " + result); if(s[j] == 0) continue; if(s[j] == tgt) { result += 1; s[j] = 0; } else if(s[j] == (tgt + 1)) { result -= 1; if(result < 0) return 0; s[j] = 0; } } if(result != 0) return 0; } return 1; } } |