zoukankan      html  css  js  c++  java
  • Leetcode38--->Count and Say

    题目:给定一个整数n,求出第n个序列,序列规则如下:

    举例:

    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数是什么,后来发现第2个数其实就是第一个数countAndSay的结果,依次类推,就可以得到第n个数的countAndSay了;

    下面就是要看如何求一个数的countAndSay了:这个还是很简单的,记录第一个数字pre,然后看后面有几个数字和它相等,等到不相等的时候,就将数字和次数的组合加进结果;然后pre等于那个不相等的数字,继续计数,一次类推即可;

    代码如下:

     1 public class Solution {
     2     public String countAndSay(int n) {
     3         if(n < 1)
     4             return "";
     5         String res = "1";
     6         for(int i = 1; i < n; i++)
     7         {
     8             res = doCountAndSay(res);
     9         }
    10         return res;
    11     }
    12     public String doCountAndSay(String res)
    13     {
    14         int count = 0;
    15         char last = res.charAt(0);
    16         StringBuffer sb = new StringBuffer();
    17         int len = res.length();
    18         for(int i = 0; i <= len; i++)  // i == len的时候,表示从某一个位置开始到结尾都是同一个数,因此还需要将结果加入结果集中
    19         {
    20             if(i < len && res.charAt(i) == last)
    21                 count ++;
    22             else
    23             {
    24                 sb.append(String.valueOf(count));
    25                 sb.append(String.valueOf(last));
    26                 count = 1;  // 因此此时i位置的数已经是一个新的数了,所以count初值为1
    27                 if(i < len)
    28                     last = res.charAt(i);
    29             }
    30         }
    31         return sb.toString();
    32     }
    33 }
  • 相关阅读:
    springcloud-Ribbon之手写轮询算法
    springcloud-Ribbon负载均衡规则的替换
    git本地库和远程库的连接和断开
    本地项目第一次提交到码云或github
    python基础语法练习
    Xss-labs-level11-15
    Vulnhub-靶机-ESCALATE_LINUX: 1
    Xss-labs-level7-10
    Vulnhub-靶机-DC: 6
    Jenkins入门之执行Powershell脚本
  • 原文地址:https://www.cnblogs.com/leavescy/p/5900792.html
Copyright © 2011-2022 走看看