38. Count and Say

37次阅读

共计 1051 个字符,预计需要花费 3 分钟才能阅读完成。

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 where 1 ≤ n ≤ 30, 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”

难度:easy
题目:count-and-say 序列如下如示:
1. 1
2. 11
3. 21
4. 1211
5. 111221
1 读作 1 个 1 或 11
11 读作 2 个 1 或 21
21 读作 1 个 2,接着 1 个 1 或 1211
给定一个整数 n 大于等于 1 小于等于 30, 产生第 n 组序列。注意:每项由整数组成的序列以字符串表示。
Runtime: 3 ms, faster than 72.13% of Java online submissions for Count and Say.Memory Usage: 25.8 MB, less than 98.33% of Java online submissions for Count and Say.
class Solution {
public String countAndSay(int n) {
String str = “”;
for (int i = 0; i < n; i++) {
str = generateNext(str);
}

return str;
}

private String generateNext(String s) {
if (s.isEmpty()) {
return “1”;
}
// add and end flag
s += “.”;
int counter = 1;
StringBuilder str = new StringBuilder();
for (int i = 1; i < s.length(); i++) {
if (s.charAt(i) != s.charAt(i – 1)) {
str.append(counter).append(s.charAt(i – 1));
counter = 1;
} else {
counter++;
}
}

return str.toString();
}
}

正文完
 0