WARush

SRMの結果とか、解けた問題のコードを書いていきます

SRM611 Div2 Easy "InterestingNumber"

問題

TopCoder Statistics - Problem Statement

キツネのシエルは41312432という数字は面白いなぁと思っている。なぜならその数字は次のような性質を持っているからである。2つある「1」という数字は「1」つの数字を間に挟んでいる。2つある「2」という数字は「2」つの数字を間に挟んでいる。2つある「3」という数字は(ry

正確には、数字Xが次のような性質を持っていたら、彼は面白いなぁと感じるようである。Dは0~9とする。Xには全てのDは、まったく含んでいないか、ちょうど2つ含んでいる。その2つのDの間にはD個だけ数字がある。

あなたは正の整数を表す文字列 x が与えられる。シエルがこの数字を面白いなぁと感じるようであれば"Interesting"を、そうでなければ"Not interesting"を返せ。

制約

1 <= x <= 1000000000
xは0で始まらない


考えたこと

やるだけ


ソースコード

int x[11]; 

class InterestingNumber { 

  public: 

  string isInteresting(string X) { 
    int N = X.size(); 

    for (int i = 0; i < N; i++) { 
      x[i] = X[i] - '0'; 
    } 

    int cnt[10]; 
    memset(cnt, 0, sizeof(cnt)); 
    for (int i = 0; i < N; i++) { 
      cnt[x[i]]++; 
    } 

    // 0~9は0個または2個あるか?
    for (int i = 0; i < N; i++) { 
      if (cnt[i] != 0 && cnt[i] != 2) return "Not interesting"; 
    } 

    // 数字Dの間の数字はD個あるか?
    for (int i = 0; i < N; i++) { 
      int a = i - x[i] - 1; 
      int b = i + x[i] + 1; 

      bool b1 = a >= 0 && x[a] == x[i];  
      bool b2 = b < N && x[b] == x[i]; 
      if (!b1 && !b2)  return "Not interesting"; 
    } 
     
    return "Interesting"; 
  }
};