题目
报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
1
11
21
1211
111221
1 被读作 "one 1" ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2", "one 1" ("一个二" , "一个一") , 即 1211。
给定一个正整数 n ,输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1:
输入: 1, 输出: "1"
示例 2:
输入: 4, 输出: "1211"
题解
这道题关键是先理解清楚题意。由一个序列报数生成下一个序列,求解的是,报数的第n项,所以肯定要循环n次即可。生成规则方面,就是先遍历当前的字符串,然后在相同的字符个数进行报数即可。这里java实现的话还要注意一个细节,就是StringBuider()不会每次都new 一个对象出来,避免开销。
public String countAndSay(int n) {
String s = "1";
int k;
for (int i = 1; i < n; i++) {
StringBuilder t = new StringBuilder();
for (int j = 0; j < s.length(); j = k) {
k = j;
//找有几个相同的.
while(k < s.length() && s.charAt(k) == s.charAt(j)) {
k++;
}
t.append(k - j).append(s.charAt(j));
}
s = t.toString();
}
return s;
}
每日英语
- inhabittant(n.)居民
- inhabit (v.)居住于
- -habit 在某个地方住习惯了就叫居民了
- dwell in 居住于
- dwell on 老想着
- -d 坐着的词根,-d字母像不像一个屁股在那里蹲着.
- settle (v.) 解决
- settle the issue 解决问题
- solve the problem
- -sit = -set 词根元音替换意思不变,定向来的词根(把事情搞定)
- settle down 定居,比如在北京打拼几年去二线城市定居
- saddle 马鞍
- 机器学习中的马鞍点: saddle point
- settlement(n.) 和解(搞定的感觉)
网友评论