leetcode 38.外観数列
4333 ワード
タイトル
「外観数列」は整数のシーケンスで、数値1からシーケンスの各項目が前の項目について説明されます.最初の5つは次のとおりです.
1は「one 1」(「1つ1つ」)、すなわち11と読まれる.11は「two 1 s」(「2つ1つ」)、すなわち21と読まれる.21は「one 2」、「one 1」(「1つの2」、「1つの1」)、すなわち1211と読まれる.
正の整数n(1≦n≦30)が与えられ、外観数列のn番目の項が出力される.
注:整数シーケンスの各項目は文字列として表示されます.
解法再帰
「外観数列」は整数のシーケンスで、数値1からシーケンスの各項目が前の項目について説明されます.最初の5つは次のとおりです.
1
11
21
1211
111221
1は「one 1」(「1つ1つ」)、すなわち11と読まれる.11は「two 1 s」(「2つ1つ」)、すなわち21と読まれる.21は「one 2」、「one 1」(「1つの2」、「1つの1」)、すなわち1211と読まれる.
正の整数n(1≦n≦30)が与えられ、外観数列のn番目の項が出力される.
注:整数シーケンスの各項目は文字列として表示されます.
解法再帰
class Solution {
public:
string countAndSay(int n) {
if(n == 1)
return "1";
string str = countAndSay(n - 1);
int len = str.length();
string result;
for(int i = 0;i < len;)
{
int count = 1;
while(i < len - 1 && str[i] == str[i + 1])
{
i = i + 1;
count++;
}
result = result + char(count + '0') + str[i];
i++;
}
return result;
}
};