报数
描述
报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:
1, 11, 21, 1211, 111221, ...
1 读作 "one 1" -> 11.
11 读作 "two 1s" -> 21.
21 读作 "one 2, then one 1" -> 1211.
给定一个整数 n, 返回 第 n 个顺序。
注意事项
整数的顺序将表示为一个字符串。
样例
给定 n = 5, 返回 "111221".
考察点
- 遍历字符串
答案
public String countAndSay(int n) {
// Write your code here
if (n <= 0) {
return "";
}
if (n == 1) {
return "1";
}
if (n == 2) {
return "11";
}
String numStr = "11";
for (int j = 0; j < n - 2; j++) {
numStr = handleNum(numStr);
}
return numStr;
}
public String handleNum(String num) {
String result = "";
List<String> strNum = new ArrayList<>();
List<Integer> strNumInt = new ArrayList<>();
int size = num.length();
for (int i = 0; i < size; i++) {
char char1 = num.charAt(i);
int tmpNum = 0;
for (int j = i; j < size; j++) {
char tmpChar = num.charAt(j);
if (tmpChar == char1) {
tmpNum += 1;
i = j;
} else {
break;
}
}
strNum.add(char1 + "");
strNumInt.add(tmpNum);
}
for (int i = 0; i < strNum.size(); i++) {
result += strNumInt.get(i) + strNum.get(i);
}
return result;
}