420-报数

报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:

1, 11, 21, 1211, 111221, ...

  • 1 读作 "one 1" -> 11.
  • 11 读作 "two 1s" -> 21.
  • 21 读作 "one 2, then one 1" -> 1211.

给定一个整数 n, 返回 第 n 个顺序。

注意事项

整数的顺序将表示为一个字符串。

样例

给定 n = 5, 返回 "111221".

标签

字符串处理 脸书

思路

看懂题,找到报数规律,就可以写出程序

  • n = 1,result = "1",这是初始数据
  • n = 2,result = "11",意味着上一个报数的结果是 "1个1"
  • n = 3,result = "21",意味着上一个报数的结果是 "2个1"
  • n = 4,result = "1211",意味着上一个报数的结果是 "1个2、1个1"
  • n = 5,result = "111221",意味着上一个报数的结果是 "1个1、1个2、2个1"
  • ...

code

class Solution {
public:
/*
* @param n: the nth
* @return: the nth sequence
*/
string countAndSay(int n) {
// write your code here
if (n <= 0) {
return string("");
}
string result("1");
for (int i = 1; i < n; i++) {
string temp;
int count = 1, j;
for (j = 0; j < result.size() - 1; j++) {
if (result[j] == result[j + 1]) {
count++;
}
else{
temp += ('0' + count);
temp += result[j];
count = 1;
}
}
if (j > 0 && result[j] == result[j - 1]) {
temp += ('0' + count);
temp += result[j];
}
else if (j == 0) {
temp += '1';
temp += result[j];
}
else {
temp += '1';
temp += result[j];
}
result = temp;
}
return result;
}
};

lintcode-420-报数的更多相关文章

  1. lintcode :Count and Say 报数

    题目: 报数 报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数.如下所示: 1, 11, 21, 1211, 111221, ... 1 读作 "one 1" -> ...

  2. 420. Count and Say【LintCode java】

    Description The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, ...

  3. [LintCode]——目录

    Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...

  4. 【LeetCode/LintCode 题解】约瑟夫问题 · Joseph Problem

    n个人按顺序围成一圈(编号为1~n),从第1个人从1开始报数,报到k的人出列,相邻的下个人重新从1开始报数,报到k的人出列,重复这个过程,直到队伍中只有1个人为止,这就是约瑟夫问题.现在给定n和k,你 ...

  5. (lintcode全部题目解答之)九章算法之算法班题目全解(附容易犯的错误)

    --------------------------------------------------------------- 本文使用方法:所有题目,只需要把标题输入lintcode就能找到.主要是 ...

  6. Lintcode 85. 在二叉查找树中插入节点

    -------------------------------------------- AC代码: /** * Definition of TreeNode: * public class Tree ...

  7. Lintcode 166. 主元素

    ----------------------------------- Moore's voting algorithm算法:从一个集合中找出出现次数半数以上的元素,每次从集合中去掉一对不同的数,当剩 ...

  8. Lintcode 166. 链表倒数第n个节点

    ----------------------------------- 最开始的想法是先计算出链表的长度length,然后再从头走 length-n 步即是需要的位置了. AC代码: /** * De ...

  9. Lintcode 157. 判断字符串是否没有重复字符

    ------------------------ 因为字符究竟是什么样的无法确定(比如编码之类的),恐怕是没办法假设使用多大空间(位.数组)来标记出现次数的,集合应该可以但感觉会严重拖慢速度... 还 ...

  10. Lintcode 175. 翻转二叉树

    -------------------- 递归那么好为什么不用递归啊...我才不会被你骗...(其实是因为用惯了递归啰嗦的循环反倒不会写了...o(╯□╰)o) AC代码: /** * Definit ...

随机推荐

  1. T6跨账套辅助工具[v1.04]

    [v1.03] 增加自定义报表,用户可以自行设置报表所打开的数据表,然后设置查询条件 [v1.04]更改单据显示样式,直接以用友打印预览的方式显示,允许用自定义显示,打印样式 下图为新的显示样式 下图 ...

  2. Business Unit Helper

    using System; using System.Linq; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Sy ...

  3. python2.7入门---多线程

        多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹 ...

  4. 20155215宣言 实验三 敏捷开发与XP实践 实验报告

    实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实 ...

  5. 20155302杨效宸《Java程序设计》课程总结

    20155302杨效宸<Java程序设计>课程总结 一.每周作业 第一周学习总结:http://www.cnblogs.com/STILLlover521/p/6457914.html 第 ...

  6. 20155318 2016-2017-2 《Java程序设计》第三周学习总结

    20155318 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 一.类与对象 Clothes c1 = new Clothes();将c1名称参考至新建对象 ...

  7. springboot之oauth2

    一.OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0. OAuth 2.0关注客户端开发者的简易性.要么通过组织在资源拥有者和HTTP服务商之间的 ...

  8. MySQLdb in Python: “Can't connect to MySQL server on 'localhost'”

    因为我使用的是win64,所以在此系统下,需要设置为 127.0.0.1 #coding=utf-8 import MySQLdb if __name__ == '__main__': # 打开数据库 ...

  9. clean code(一)

    代码整洁之道对于程序的重构及可读性至关重要.开始整洁之道吧!!! 一.抽离try catch 模块 public void delete(Page page){ try { deletePageAnd ...

  10. 学习笔记之shell命令

    linux shell命令学习笔记:~这里只是对自己一些常用但是不熟悉的的命令进行记录 -------------------------------------------------------- ...