leetcode之Count and Say

這個題目關鍵是理解題目。別人是這樣理解的。

1

1個1,即11

2個1,即21

1個2,1個1,即1211,

1個1,1個2,2個1,即111221,

3個1,2個2,1個1,即312211


The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...

1 is read off as "one 1" or 11.
11 is read off as "two 1s" or 21.
21 is read off as "one 2, then one 1" or 1211.

Given an integer n, generate the nth sequence.

Note: The sequence of integers will be represented as a string.

Show Tags
Show Similar Problems

// test38CountAndSay.cpp : 定義控制檯應用程序的入口點。

//


#include "stdafx.h"
#include "string"
#include "iostream"


using std::cout;
using std::endl;
using std::string;
string countAndSay(int n);
string count(string temp);


int _tmain(int argc, _TCHAR* argv[])
{
string s = countAndSay(4);
return 0;
}


string countAndSay(int n) 
{
string result;
if (n == 1)
return "1";
else
{
result = "1";
for (int i = 1; i < n; i++)
{
result = count(result);
}
}
return result;


}
string count(string temp)
{
int n = temp.size();
char countNum;
int count = 0;
string result = "";
char current = temp[0];
for (auto i = 0; i < n; i++)
{
if (temp[i] == current)
{
count++;
continue;//相等就繼續往後搜索
}
else
{   //不等則拼接後重新搜索,注意當前字符更新。
countNum = count + 48;//Int轉字符型
result += countNum;
result += current;
count = 1;
current = temp[i];
}
}
//拼接最後搜索到的數字。
countNum = count + 48;
result += countNum;
result += current;
return result;
}
發佈了49 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章