1、题目
The count-and-say sequence is the sequence of integers with the first five terms as following:
1. 1 2. 11 3. 21 4. 1211 5. 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 term of the count-and-say sequence.
Note: Each term of the sequence of integers will be represented as a string.
Example 1:
Input: 1 Output: "1"
Example 2:
Input: 4 Output: "1211" Exapmle // 1 1 // 2 11 // 3 21 // 4 1211 // 5 111221 // 6 312211 // 7 13112221
2、代码实现
public class Solution { public String returnLast(String s) { if (s == null || s.length() == 0) return null; String result = ""; int length = s.length(); if (length == 1) { return "1" + s; } int count = 1; int init = s.charAt(0); for (int i = 1; i < s.length(); i++) { if (s.charAt(i) == s.charAt(i - 1)) { count++; if (i == length - 1) { char ss = s.charAt(i - 1); result = result + count + s.charAt(i - 1); } } else { char ss = s.charAt(i - 1); result = result + count + s.charAt(i - 1); count = 1; if (i == length - 1) { result += ("1" + s.charAt(i)); } } } return result; } public String countAndSay(int n) { if (n <= 0) return null; if (n == 1) return "1"; else { return returnLast(countAndSay(n - 1)); } } }
3、总结
1、用递归方法
2、我们递归的时候,先实现默认包含字符串,如何得到下一个字符串,这也是我们需要把每次得到的结果递归,所以,我们先写个函数简单实现从这个字符串如果得到下一个字符串
3、我们在写递归公共函数的实现时候,要注意,末尾和数字前一位是否相同和不同的情况。