LeetCode No.38 Count and Say
2016-11-02 19:32
357 查看
The count-and-say sequence is the sequence of integers beginning as follows:
Given an integer n, generate the nth sequence.
Note: The sequence of integers will be represented as a string.
====================================================================================
题目链接:https://leetcode.com/problems/count-and-say/
题目大意:求出第n个序列。其中第一个序列是1,然后每个序列都是前面一个序列的的读法。比如1211读法为:1个1,1个2,2个1,红色部分合起来就是111221。
思路:其实就是模拟,遍历前一个序列,统计字符与其对应的相连个数,合起来就是下一个序列。
注意点:要注意当字符个数sum大于9的时候,就不能直接将sum转成char了,所以要写一个函数将int转成string。
附上代码:
class Solution {
public:
string countAndSay(int n) {
if ( n <= 0 )
return "" ;
string ans = "1" ;
for ( int i = 2 ; i <= n ; i ++ )
{
string s = "" ;
char ch = ans[0] ;
int sum = 1 ;
for ( int j = 1 ; j < ans.size() ; j ++ )
{
if ( ans[j] != ch )
{
s += intToStr ( sum ) ;
s += ch ;
ch = ans[j] ;
sum = 1 ;
}
else
sum ++ ;
}
s += intToStr ( sum ) ;
s += ch ;
ans = s ;
}
return ans ;
}
private :
string intToStr ( int n )
{
string ans = "" ;
while ( n )
{
ans = char ( n % 10 + '0') + ans ;
n /= 10 ;
}
return ans ;
}
};
1, 11, 21, 1211, 111221, ...
1is read off as
"one 1"or
11.
11is read off as
"two 1s"or
21.
21is 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.
====================================================================================
题目链接:https://leetcode.com/problems/count-and-say/
题目大意:求出第n个序列。其中第一个序列是1,然后每个序列都是前面一个序列的的读法。比如1211读法为:1个1,1个2,2个1,红色部分合起来就是111221。
思路:其实就是模拟,遍历前一个序列,统计字符与其对应的相连个数,合起来就是下一个序列。
注意点:要注意当字符个数sum大于9的时候,就不能直接将sum转成char了,所以要写一个函数将int转成string。
附上代码:
class Solution {
public:
string countAndSay(int n) {
if ( n <= 0 )
return "" ;
string ans = "1" ;
for ( int i = 2 ; i <= n ; i ++ )
{
string s = "" ;
char ch = ans[0] ;
int sum = 1 ;
for ( int j = 1 ; j < ans.size() ; j ++ )
{
if ( ans[j] != ch )
{
s += intToStr ( sum ) ;
s += ch ;
ch = ans[j] ;
sum = 1 ;
}
else
sum ++ ;
}
s += intToStr ( sum ) ;
s += ch ;
ans = s ;
}
return ans ;
}
private :
string intToStr ( int n )
{
string ans = "" ;
while ( n )
{
ans = char ( n % 10 + '0') + ans ;
n /= 10 ;
}
return ans ;
}
};
相关文章推荐
- Leetcode NO.38 Count and Say
- LeetCode--No.38--Count and Say
- [LeetCode 38] Count and Say
- LeetCode:Count and Say
- [LeetCode]—Count and Say 读数字
- leetcode——38——Count and Say
- [leetcode]Count and Say
- 【LeetCode with Python】 Count and Say
- [Leetcode] 38 - Count and Say
- 【Leetcode】Count and Say
- leetcode之Count and Say
- LeetCode-38 count and say
- leetcode:count and say
- [leetcode]Count and Say (伯爵说 C语言实现)
- Leetcode: Count and Say
- [LeetCode] Count and Say (使用java string 体会)
- LeetCode 38 Count and Say
- Leetcode 38 Count and Say
- leetcode 038 Count and Say
- [LeetCode][Java] Count and Say