1, 11, 21, 1211, 111221, ...
Given an integer n, generate the nth sequence.
这题是easy题,但我不知不觉又做了一个小时..感觉我的精神是游离的..一旦遇到思维困难就常常陷入一种不思进取的状态,然后不断自我怀疑....这种习惯是需要替换的。即便做不出来不要一直呆在那里想呀。
这题要维护两个string,第i个 和第i-1个sequence。巧妙的地方是for循环外面的部分,是处理最后1位或者n位数字的。所以我觉得这题思维难度还是有的。注意每次结束后或者开始前count要置1。
public String countAndSay(int n) {
StringBuilder res = new StringBuilder();
res.append("1");
int count = 1;
int i = 1;
while (i < n) {
StringBuilder sb = new StringBuilder();
for (int j = 1; j < res.length(); j++) {
if (res.charAt(j) == res.charAt(j - 1)) {
count++;
} else {
sb.append(count);
sb.append(res.charAt(j - 1));
count = 1;
}
}
sb.append(count);
//count 每次都要置1
count = 1;
sb.append(res.charAt(res.length() - 1));
res = sb;
i++;
}
return res.toString();
}