481魔法の文字列
Sの魔法の文字列は「1」と「2」、および次のルールが含まれています。
シリーズ文字「1」と「2」は、文字列の連続発生回数自体Sが生成されますので、魔法の文字列Sです。
文字列Sのいくつかの要素の前に次のように:S =「1221121221221121122 ...」
私たちは、連続するS 1及び2にグループ化されている場合、それは次のようになります。
1 22 22 11 2 11 22 11 2 1 22 1 ...
各グループ「1」又は「2」は、それぞれの出現回数です。
1 2 2 1 1 2 1 2 2 1 2 2 ...
あなたは上記の発生回数がS自体で見ることができます。
入力としてN整数与えられ、Nデジタル「1」の前のストリングSマジックナンバーを返します。
注:Nが100,000を超えることはありません。
例:
入力:6
出力:3
説明:最初の6つの要素の魔法の文字列Sが「12211」で、3、戻り3が含まれています。
class Solution {
public int magicalString(int n) {
List<Integer> s2=new ArrayList<Integer>();
s2.add(1);s2.add(-1);s2.add(-1);
int key=1;
for (int i = 2; i < n; i++) {
if(s2.get(i)==1)
s2.add(key);
if(s2.get(i)==-1){
s2.add(key);
s2.add(key);
}
key=-key;
}
key = 0;
for (int i = 0;i<n;i++) {
if(s2.get(i)==1)
key++;
}
return key;
}
}