报数(leetcode)
题目描述如下:
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
1. 1 2. 11 3. 21 4. 1211 5. 111221
1 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" ("一个二" , "一个一") , 即 1211。
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
输入: 1 输出: "1"
示例 2:
输入: 4 输出: "1211"
c++代码如下:
class Solution {
public:
string countAndSay(int n) {
string str="1"; //定义第一个数
for(int i=2;i<=n;i++){ //从第二个开始遍历到n
string temp=""; //暂存字符串,初始化为空
int start=0,count=0; //数字及其个数
for(int j=0;j<str.size();j++){ //从字符串首到字符串尾
if(str[start]==str[j])
count++; // 计数
else{
temp+=to_string(count)+str[start]; //把数字及其个数存到字符串temp
start=j; //下一个数字
count=1; //因为for最后还有一次j++
}
}
temp+=to_string(count)+str[start];
str=temp;
}
return str;
}
};

浙公网安备 33010602011771号