p76 报数(leetcode 38)
一:解题思路
Time:O(1.3^n)或O(2^n) Space:O(1.3^n)或O(2^n)
二:完整代码示例 (C++版和Java版)
C++:
class Solution { public: string countAndSay(int n) { if (n < 1) return ""; string s = "1"; for (int i = 1; i < n; i++) { string sb = ""; int count = 1; for (int p = 0; p < s.length(); p++) { if (p + 1 < s.length() && s[p] == s[p + 1]) { count++; } else { sb += to_string(count) + s[p]; count = 1; } } s=sb; } return s; } };
Java:
class Solution { public String countAndSay(int n) { if(n<1) return null; String ret="1"; for(int i=1;i<n;i++) { int count=1; StringBuilder sb=new StringBuilder(); for(int p=0;p<ret.length();p++) { if(p+1<ret.length() && ret.charAt(p)==ret.charAt(p+1)) { count++; } else { sb.append(count).append(ret.charAt(p)); count=1; } } ret=sb.toString(); } return ret; } }

浙公网安备 33010602011771号