zoukankan      html  css  js  c++  java
  • LeetCode算法题-报数

    报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

    1.     1
    2.     11
    3.     21
    4.     1211
    5.     111221

    1 被读作  "one 1"  ("一个一") , 即 11
    11 被读作 "two 1s" ("两个一"), 即 21
    21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211

    给定一个正整数 n ,输出报数序列的第 n 项。

    注意:整数顺序将表示为一个字符串。

    示例 1:

    输入: 1
    输出: "1"

    示例 2:

    输入: 4
    输出: "1211"

    解答:

        public static String countAndSay(int n) {
            int result = 1;
            String str = "";
            if (n == 0) return str;
            if (n == 1) return str + result;
            if (n == 2) return str + result + result;
            if (n == 3) return "21";
            str = "21";
    
            String tempresult = "";
            int sum = 1;  //计数君
            for (int i = 3; i < n; i++) {
                for (int j = 0; j < str.length(); j++) {
                    // 在遍历到末尾前,当前的数与后一个数相等
                    if (j != str.length() - 1 && str.charAt(j) == str.charAt(j+1)) {
                        sum++;  // 相邻且相同的数计数+1
                        continue;
                    // 若遍历到末尾,未位数与前一个数相等
                    }else if (j == str.length() - 1 && str.charAt(j) == str.charAt(j-1)){
                        tempresult += sum + String.valueOf(str.charAt(j));
                        sum = 1;    // 已完成报数,计数君重置为0
                    }else {
                        tempresult += sum + String.valueOf(str.charAt(j));
                        sum = 1;    // 已完成报数,计数君重置为0
                    }
                }
                str = tempresult;
                tempresult = "";
    
            }
            System.out.println("str:" + str);
            return str;
        }
  • 相关阅读:
    注册登录
    ASP.NET常用编程代码(一)
    HTML、CSS、JS、PHP 的学习顺序~(零基础初学者)
    如何学习javascript?(转)
    如何完全卸载SQL Server 2005
    如何给网页标题栏上添加图标(favicon.ico)
    网页制作常用代码
    网页颜色代码对照表
    ASP.NET常用编程代码(二)
    50个PHOTOSHOP快捷键技能!
  • 原文地址:https://www.cnblogs.com/libera11/p/8910564.html
Copyright © 2011-2022 走看看