Java実装LeetCode 481魔法の文字列

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;
    }
}
リリース1583元の記事 ウォンの賞賛20000 + ビュー235万+

おすすめ

転載: blog.csdn.net/a1439775520/article/details/104965645