🌗 38. 外观数列
2022年10月10日
- algorithm
🌗 38. 外观数列
难度: 🌗
问题描述
解法
class Solution {
public String countAndSay(int n) {
// 思路:
// 遍历,遇到非连续的字符就将前面的表示
String cur = "1";
if(n == 1) {
return cur;
}
// n > 1
// 对 cur 进行拆分,得到 cur 对应的字符串
for(int i = 1; i < n; i ++) {
cur = getStr(cur);
}
return cur;
}
private String getStr(String str) {
// System.out.println(str);
int len = str.length();
// len > 1
StringBuilder sb = new StringBuilder();
char pre = str.charAt(0);
int count = 1;
for(int i = 1; i < len; i ++) {
char cur = str.charAt(i);
if(pre == cur) {
count ++;
} else {
sb.append(count).append(pre);
pre = cur;
count = 1;
}
}
if(count > 0) {
sb.append(count).append(pre);
}
// System.out.println(sb.toString());
return sb.toString();
}
}