题目
题解
代码
import java.util.*;
public class code38 {
public static String countAndSay(int n) {
String res = "1";
for (int i = 1; i < n; i++) {
res = next_times(res);
}
return res;
}
public static String next_times(String res) {
int i = 0;
int n = res.length();
String ans = "";
while (i < n) {
int count = 1;
while ((i < n - 1) && (res.charAt(i) == res.charAt(i + 1))) {
i++;
count++;
}
ans += (count + "" + res.charAt(i));
i++;
}
return ans;
}
// public static String countAndSay(int n) {
// return countHelper("1", n);
// }
// // 尾递归
// public static String countHelper(String str, int n) {
// if (n == 1) {
// return str;
// } else {
// // 求下一个数
// StringBuilder sb = new StringBuilder();
// int i = 0;
// // 一直读数
// while (i < str.length()) {
// int count = 1;
// // 如果一直是同一个数
// while ((i < str.length() - 1) && (str.charAt(i) == str.charAt(i + 1))) {
// i++;
// count++;
// }
// //下一个数更新
// sb.append(Integer.toString(count) + str.charAt(i));
// i++;
// }
// str = sb.toString();
// }
// return countHelper(str, n - 1);
// }
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextInt()) {
int x = sc.nextInt();
String str = countAndSay(x);
System.out.println(str);
}
}
}