LeetCode-38. Count and Say-思路详解-C++
来源:互联网 发布:龙bt发布永久域名 编辑:程序博客网 时间:2024/05/22 17:31
题目
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.
翻译
计数表达序列,是有一组整数组成的。
1,11,21,1211,111221,…
1 读成1个1,或者11
11 读成两个1,或者21
21 读成一个2,一个1,或1211
给定一个整数,产生第n个序列。
思路
可以看出,第i个序列和第i-1个序列有关,即对第i-1个序列的解读。第一个序列为1,然后依次向后解读即可。
所以核心是解读函数。
1,对于第i个序列,则对第i-1个序列A进行遍历,将第一个值作为标记值。
2,如果A[i] == flag,则计数加一
3,如果不同,则保存计数结果,和该数。然后更新标记值以及计数值。然后接着遍历。
代码
class Solution {public: string countAndSay(int n) { string res = "1"; for(int i = 1; i < n;i++){ string tmp = ""; int cnt = 0; char s = res[0]; int j = 0; int len = res.size(); while(j < len){ if(res[j] != s){ tmp += to_string(cnt); tmp += s; s = res[j]; cnt = 1; }else{ cnt++; } if(j == len-1){ tmp += to_string(cnt); tmp += s; } j++; } res = tmp; } return res; }};
0 0
- LeetCode-38. Count and Say-思路详解-C++
- 【C++】【LeetCode】38. Count and Say
- [LeetCode]38.Count and Say
- LeetCode --- 38. Count and Say
- LeetCode 38.Count and Say
- [Leetcode] 38. Count and Say
- 38. Count and Say LeetCode
- Leetcode 38. Count and Say
- leetcode 38. Count and Say
- [leetcode] 38. Count and Say
- LeetCode-38.Count and Say
- LeetCode *** 38. Count and Say
- leetcode 38. Count and Say
- LeetCode-38. Count and Say
- LeetCode 38. Count and Say
- LeetCode 38. Count and Say
- Leetcode - 38. Count and Say
- LeetCode 38. Count and Say
- python 二进制字符串和整数之间的装换
- 38、ActiveMQ JMSDEMO1 一对一点对点发布消息
- 使用gdb调试内嵌汇编的代码
- opencv视频转图片并保存到文件夹下
- 最简实例说明wait、notify、notifyAll的使用方法
- LeetCode-38. Count and Say-思路详解-C++
- stl之std::alloctor 配置器源码
- codeforces 735 C Tennis Championship
- ADB环境变量配置
- Android Camera使用总结与那些坑
- R语言xgboost自定义目标函数
- 【JZOJ3839】Baby Step
- 2 Python 利用socket实现的服务端和客户端
- 找出符合以下条件的Troitsky数,将该数的首位数字移动到末位数字之后得到的数是原数的整数倍 例如:将142857的首位数字1移动到末位之后得到的数是428571,而428571=3*1