LeetCode-38-Count and Say(String/递归)-Easy
2016-01-03 10:47
399 查看
题意理解:
按照题意描述,求解nth个生成字符串。
如1,11,21,1211,的规则为:
1)第一个初始值为1;
2)为了描述第一个值只有一个1,所以生成第二个值11;
3)为了描述第二个值有两个1,所以生成第三个值21;
4)为了描述第三个值有一个2,和一个1,所以生成第四个值1211;
题目分析:
1. 使用stringstream来进行整数和字符串之间的转换;
2. 使用递归对字符串进行规则解析;
解题代码:
按照题意描述,求解nth个生成字符串。
如1,11,21,1211,的规则为:
1)第一个初始值为1;
2)为了描述第一个值只有一个1,所以生成第二个值11;
3)为了描述第二个值有两个1,所以生成第三个值21;
4)为了描述第三个值有一个2,和一个1,所以生成第四个值1211;
题目分析:
1. 使用stringstream来进行整数和字符串之间的转换;
2. 使用递归对字符串进行规则解析;
解题代码:
class Solution { private: string countAndSay(string s){ string ans=""; int size=s.size(); if(size==0){ return ans; } char c=s[0]; int cnt=1; string sCnt; for(int i=1; i<size; i++){ if(s[i]==c){ cnt++; continue; }else{ break; } } stringstream ss; ss<<cnt; ss>>sCnt; ans+=sCnt; ans+=c; if(cnt<size){ return ans+countAndSay(s.substr(cnt)); }else{ return ans; } } public: string countAndSay(int n) { int index=1; string pre="1"; string ans=pre; while(index<n){ pre=countAndSay(pre); ans=pre; index++; } return ans; } };
相关文章推荐
- matlab中的rand函数
- WAF
- 一个汉字 占用 三个字节...
- mfc在窗口中添加右键菜单
- 2015总结
- linux ubuntu debian 使用笔记
- 课程设计 校园导航
- 排序 -- 思路简析(二)
- SQL SERVER CHAR ( integer_expression )各版本返回值差异的案例
- 资源(先备着)
- hdu 5606
- matlab中sort函数的用法
- bzoj 2330 [SCOI2011]糖果(差分约束系统)
- 读《重构》1~3章
- Kaggle:What's Cooking?
- JavaScript:void(0);的作用
- Struts2 web.xml文件配置
- QT编译出错解决方法
- Python 决定迁移到 GitHub
- JavaScript进阶(二)在一个JS文件中引用另一个JS文件