zoukankan      html  css  js  c++  java
  • LeetCode 38 Count and Say(字符串规律输出)

     
    1—>11—>21—>1211—>111221—>312211—>….
     
    按照上面的规律进行求解出第n个字符串是什么。
     
    规律:相连的数字有多少个然后添加上这个数字
     
    参考代码: 
     
    package leetcode_50;
    
    
    /***
     * 
     * @author pengfei_zheng
     * 按照规律进行求解字符串
     */
    public class Solution38 {
        public static String countAndSay(int n) {
            if(n<=0) {
                return "";
            }
            String s="1";
            int times = 1;
            while(times<n){
                s = getSay(s);
                times++;
            }
            return s;
        }
        private static String getSay(String s) {
            int count =0;
            StringBuilder str = new StringBuilder("");
            for(int i = 0; i<s.length(); i++){
                //first to add in order to prevent thinking about the index
                count ++;
                //not reach the end of s and next item is not equal to the pre item
                if ((i< s.length()-1) && (s.charAt(i) != s.charAt(i + 1))) {
                    str = str.append(count).append(s.charAt(i));//rebuild the str
                    count = 0;//reset count to zero
                }
                else if ((i == s.length()-1)) {//meet the end of s 
                    str = str.append(count).append(s.charAt(i));
                }    
            }
            return str.toString();
        }
        public static void main(String[]args){
            String s = countAndSay(2);
            System.out.println(s);
        }
    }
  • 相关阅读:
    Linux系统下ZIP文件解压和压缩命令
    解析XML文件
    数组和集合之间的转换
    数据库密码到期修改密码
    Linux系统中启动jar程序
    JSONArray依赖包
    多态性
    接口----interface
    抽象类
    final关键字
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/6534914.html
Copyright © 2011-2022 走看看