LeetCode Count and Say 数数字
class Solution {
public:
string countAndSay(int n) {
if(n==) return "";
string str0="",str1="";
int i,t,count;
char c='*';
for(i=;i<n-;i++){ //一共要数n-1次,假如n=2,那么只要数str1这一次就行了
count=;
if(i%!=){ //i为奇数,数str0
c=str0[];
str1="";
while(c!='\0'){ //将str0 转到str1
t=;
if(str0[count]!='\0'){
while(str0[count]==c){ //判断前一个字符串里有多少个同样的,记录为count+1次
count++; //记录读出串的位置
t++; //记录相同字的个数
}
str1=str1+char(t+''); //记录到str1中
str1=str1+c;
c=str0[count++];
}
else{
str1=str1+char(t+''); //记录到str1中
str1=str1+c;
c='\0';
}
}
}
else{ //i为偶数,数str1
c=str1[];
str0="";
while(c!='\0'){ //将str0 转到str1
t=;
if(str1[count]!='\0'){
while(str1[count]==c){ //判断前一个字符串里有多少个同样的,记录为count+1次
count++; //记录读出串的位置
t++; //记录相同字的个数
}
str0=str0+char(t+''); //记录到str1中
str0=str0+c;
c=str1[count++];
}
else{
str0=str0+char(t+''); //记录到str1中
str0=str0+c;
c='\0';
}
}
}
}
if(n%==)
return str0;
else
return str1;
}
};
题意:
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.
当n=1时,返回1;
当n=2时,返回11; //数n-1时所返回的数,就是1个1的意思
当n=3时,返回21; //也就是数n=2时所要返回的数,就是两个1;
当n=4时,返回1211; //可以看到n=3时返回的是21,有一个2和一个1,即1211
。。。。。
类推下去,格式是这样子的 [多少个][什么样的字符][多少个][什么样的字符]。。。。
思路:
用两个字符串,从n=1开始数,完了存到一个字符串,这个字符串的内容就是n=2所需要返回的。再数这个字符串里的东西,存到另一个字符串。
控制好数的次数就行了,问题不大。
LeetCode Count and Say 数数字的更多相关文章
- LeetCode:至少是其他数字两倍的最大数【747】
LeetCode:至少是其他数字两倍的最大数[747] 题目描述 在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是数组中每个其他数字的两倍. 如果是,则返回最大元素 ...
- leetcode 1.回文数-(easy)
2019.7.11leetcode刷题 难度 easy 题目名称 回文数 题目摘要 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 思路 一些一定不为回文数的 ...
- 51nod 数数字(水题)
题目链接: 数数字 基准时间限制:1 秒 空间限制:262144 KB 统计一下 aaa ⋯ aaa n个a × b 的结果里面有多少个数字d,a,b,d均为一位数. 样例解释: 3333333333 ...
- java语言将任意一个十进制数数字转换为二进制形式,并输出转换后的结果
package com.llh.demo; import java.util.Scanner; /** * * @author llh * */ public class Test { /* * 将任 ...
- 51nod 1770 数数字
1770 数数字 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 难度:3级算法题 收藏 关注 统计一下 aaa ⋯ aaan个a × b 的结果里面 ...
- 牛客网NOIP赛前集训营-提高组(第一场)B 数数字
数数字 思路: 数位dp 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include< ...
- Carryon 数数字
Carryon 数数字 描述 Carryon 最近迷上了数数字,然后 Starry 给了他一个区间[l,r] ,然后提了几个要求, 需要将 l 到 r 之间的数全部转化成 16 进制,然后连起来. 将 ...
- 每日一道 LeetCode (1):两数之和
引言 前段时间看到一篇刷 LeetCode 的文章,感触很深,我本身自己上大学的时候,没怎么研究过算法这一方面,导致自己直到现在算法都不咋地. 一直有心想填补下自己的这个短板,实际上又一直给自己找理由 ...
- 数数字(JAVA语言)
package 第三章习题; /* * 把前n(n<=10000)个整数顺次写在一起: * 89101112... * 数一数0-9各出现多少次 * (输出10个整数,分别是09出现的次 ...
随机推荐
- python学习笔记11 ----线程、进程、协程
进程.线程.协程的概念 进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程.进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进 ...
- 飘逸的python - 单例模式乱弹
方法一:装饰器 利用“装饰器只会执行一次”这个特点 def singleton(cls): instances = []# 为什么这里不直接为None,因为内部函数没法访问外部函数的非容器变量 def ...
- Codeforces Round #522 Div2C(思维)
#include<bits/stdc++.h>using namespace std;int a[200007];int b[200007][7];int ans[200007];int ...
- CodeForces 106C 【DP】
题意: n g dough m种商品? 每种有ai stuffing, 拿bi stuffing + ci dough -> di tugriks rest c0 dough -> d0 ...
- AT2301 Solitaire
传送门 这里提供智障的\(O(n^2)\)做法 其实是有\(O(logn)\)做法的,但是我太菜了想不出来 Solution: 首先可以发现生成的序列一定是一个两边向中间单调递减的序列 这样就可以发现 ...
- Mac安装pyenv及pyenv的使用
Mac系统自带的Python是2.7.10,自己需要Python 3.x,此时需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存,pyenv就是这 ...
- c# 手动实现 \u 转义字符。。效果。。。
string s ="\\u"+item.Icon; // item.Icon = UnicodeEncoding.Unicode.GetString(UnicodeEncodin ...
- P2308 添加括号(区间DP)
题目背景 给定一个正整数序列a(1),a(2),...,a(n),(1<=n<=20) 不改变序列中每个元素在序列中的位置,把它们相加,并用括号记每次加法所得的和,称为中间和. 例如: 给 ...
- 【补档】Pycharm的一些配置
新建和创建文件就不必说了吧~ 运行这里原本是灰色的,我们点旁边的三角形 点绿色+号,python Name:随便写 Script:选择一个py文件~,然后OK,就可以运行了
- Testlink安装后配置修改
1.1. config.inc.php 1.1.1. 日志路径配置 /** * @var string Path to store logs - *for security reasons (see ...