NO.38 外观数列 简单
这道题读题花了我好一会儿,最后还是在别人的帮助下理解题意。。。这个外观数列的意思是:第一项 “1”;第二项描述第一项:1个1,“11”;第三项描述第二项:2个1,“21”;第四项描述第三项:1个2和1个1,“1211”;第五项描述第四项:1个1和1个2和2个1,“111221”。。。。
思路一:按序生成每个数列 按顺序依次生成每个“外观数列”,其实就是BF。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public String countAndSay(int n) { if (n==1)return "1"; String s="1"; for (int i=0;i<n-1;i++){ StringBuilder temp=new StringBuilder(); char c = s.charAt(0); int count=1; for (int j=1;j<s.length();j++){ if (c==s.charAt(j)){ count++; }else { temp.append(count).append(c); c=s.charAt(j); count=1; } } temp.append(count).append(c); s=temp.toString(); } return s; }
|
时间复杂度不会算。。。
本人菜鸟,有错误请告知,感激不尽!
更多题解和学习记录博客:博客、github