class Solution {
//find the regular pattern
public:
string countAndSay(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
string ans("1");
int rank = 1;
while (rank < n)
{
stringstream str;
int charCnt = 1;
char foreChar = ans[0];
for (int i = 1; i < ans.size(); ++i)
{
if(ans[i] != foreChar)
{
str<<charCnt<<foreChar;
foreChar = ans[i];
charCnt = 1;
}
else charCnt++;
}
str<<charCnt<<foreChar;
ans = str.str();
rank++;
}
return ans;
}
};
second time
class Solution {
public:
string countAndSay(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
string num = "1";
for(int i = 2; i <= n; ++i)
{
int j = 0;
string newNum;
while(j < num.size())
{
int k;
for(k = j+1; k < num.size(); ++k)
if(num[k] != num[j]) break;
newNum.push_back(k-j+'0');
newNum.push_back(num[j]);
j = k;
}
num = newNum;
}
return num;
}
};