-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathleet38CountAndSay.cpp
57 lines (45 loc) · 1.07 KB
/
leet38CountAndSay.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
leetcode38
38. Count and Say
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.
操作字符串
一遍遍历,记录下第一个字符,后面判断是否相等,做出不同的对策
*/
#include <iostream>
#include <sstream>
using namespace std;
string convert(string& say){
stringstream sStream;
int count = 1 ;
char last = say[0];
for(int i=1;i<=say.length();i++){
if(say[i]==last)
count++;
else{
sStream<<count<<last;
count=1;
last = say[i];
}
}
return sStream.str();
}
string countAndSay(int n){
if(n<=0) return string();
string say = "1";
for(int i=1;i<n;i++){
say=convert(say);
cout<<say<<ends;
}
return say;
}
int main(){
string r = countAndSay(3);
cout<<r<<endl;
return 0;
}