leetcode38 count and say
- 问题描述
- leetcode38 报数题,facebook 的面试题,leetcode 上的描述写得并不是很通俗易懂,让人读起来云里雾里。看看别人的题目描述:
- 意思就是:
初始值第一行是 1。
第二行读第一行,读作 1 个 1,去掉个字,写做字符串: “11”。
第三行读第二行,读作 2 个 1,去掉个字,写做字符串: “21”。
第四行读第三行,读作 1 个 2,1 个 1,去掉所有个字,写做字符串: “1211”。
第五行读第四行,读作 1 个 1,1 个 2,2 个 1,去掉所有个字,写作字符串: “ 111221”。
第六行读第五行,读作 3 个 1,2 个 2,1 个 1,去掉所以个字,写作字符串: “312211”。
本题目要求输入 1 - 30 的任意行数,输出该行字符串。
- 解决思路
- 题目意思弄清楚后,这道题就很清晰明了了,第n行结果的来源是他前面的字符串,也就是第n-1,那么这就可以用佩波拉契数列的动态规划求解思路去计算了。算是最简单的动态规划了。初始状态为 “1”,依次计算下一个,直到第n个。
- 关键是写出根据上一个字符串求解下一个字符串的方法。
- 代码
1 public class Solution { 2 public static String countAndSay(int n) { 3 /* 将30个结果统统计算出来,也是一种方法,这当前不是动态规划的思想了。 4 String[] res = new String[30]; 5 res[0] = "1"; 6 for(int i=1; i<n; i++) { 7 res[i] = findNext(res[i-1]); 8 } 9 return res[n-1]; */ 10 11 String pre = "1"; 12 if (n==1) { return pre; } 13 String res = ""; 14 for(int i=1; i<n; i++) { 15 res = findNext(pre); 16 pre = res; 17 } 18 return res; 19 } 20 21 public static String findNext(String pre) { 22 //String next = ""; 23 StringBuilder next = new StringBuilder(); 24 25 int length = pre.length(); 26 int i = 0; 27 while (i<length) { 28 int count = 1; 29 while (i+1<length && pre.charAt(i) == pre.charAt(i+1)) { 30 count ++; 31 i++; 32 } 33 next.append(count); 34 //next += String.valueOf(count); 35 next.append(pre.charAt(i)); 36 //next += pre.charAt(i); 37 i++; 38 } 39 return next.toString(); 40 } 41 42 }
转载于:https://www.cnblogs.com/dogeLife/p/11040270.html
leetcode38 count and say相关推荐
- LeetCode38——Count and Say
LeetCode38--Count and Say 上一题对我来说实在太凶残了,所以我还是缓缓先做38题好了... 题意: 可以理解为求一个数组的第n项,而这个数组的通项公式可以这样理解: 第1项:1 ...
- [Swift]LeetCode38. 报数 | Count and Say
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 2774 Solved: 1230 [Submit ...
- LeetCode刷题记录6——696. Count Binary Substrings(easy)
LeetCode刷题记录6--696. Count Binary Substrings(easy) 目录 LeetCode刷题记录6--696. Count Binary Substrings(eas ...
- c++关于map的find和count的使用
使用count,返回的是被查找元素的个数.如果有,返回1:否则,返回0.注意,map中不存在相同元素,所以返回值只能是1或0. 使用find,返回的是被查找元素的位置,没有则返回map.end(). ...
- 递归/归并:count of smaller numbers求逆序数
已知数组nums,求新数组count,count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数. 例如: nums = [5, 2, 6, 1], count = [2, 1, 1, ...
- bzoj 2588 Spoj 10628. Count on a tree (可持久化线段树)
Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MB Submit: 7669 Solved: 1894 [Sub ...
- windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题
在Windows7下调用vs2013生成的Caffe静态库时经常会提示Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer t ...
- 1093 Count PAT‘s
这题出现在"活用递推"专题下面,所谓递推就是这一步的结果和上一步的结果有直接联系.对于本题来说,从左到右,记到当前位置,一共出现的P的个数,如果当前位置是P,则个数就是上一位的加1 ...
最新文章
- 请写出查询该表中成绩最大值的sql语句_SQL-汇总分析
- 他是中国投资最厉害的人:投网易一战成名 是巴菲特忠实信徒
- maven多个子项目、父项目之间的引用问题
- 服务器ip维护无法登录,用DHCP解决服务器硬件管理口没有设置IP无法登录的问题...
- 齿轮箱数据集_基于不同工况下辅助数据集的齿轮箱故障诊断
- EasyDataTransform for mac (表格数据转换)
- Qt 实现多语言 国际化 翻译
- 电气、电子电路符号与表示方法
- android全面屏像素密度,手机屏幕分辨率、PPI像素密度科普知识大全
- CNtV电视直播解析PHP,电视直播
- 程序员投入时间和精力实现财富增长之道,这可能会伴随你程序员整个生涯(请不要连续点赞)
- Android基础篇-四大组件之使用ContentProvider实现数据共享
- “注释”是程序员的自我修养
- IMX6Q安卓解开温度墙,设置高性能模式
- ionic5中轮播图ion-slides、ion-slide的使用
- DANN loss/acc振荡
- 奇安信VS启明星辰 欲上市“新人”与上市“老手”的全面对比
- plt画网格图_matplotlib子图与多种图形绘制
- 独立显卡安装ubuntu
- MSCKF(一)——四元数的两种表示