思路
递归考虑:就像正常一样想出来思路,然后递归调用的地方,当作一个已经确定的量(可直接说一个值,这样就不会一直向下层想)
注意绝对不要在递归调用的地方一直往下层想,绝对不要,一定要把它当做一个确定的量
思路:每一层要做的事情就是
1.扩大字符
2.判断有没有第K个,有就返回
3.没有就再次调用这个方法,传入的参数是当前的list
代码
class Solution {
public char kthCharacter(int k) {
ArrayList<Character> list = new ArrayList<>();
list.add('a');
char digui = digui(list, k);
return digui;
}
//查找本层是否有符合的
//k表示第几个
public char digui(ArrayList<Character> list,int k){
//变大
int cursize=list.size();
for (int i = 0; i < cursize; i++) {
char next;
if (list.get(i)=='z'){
next='a';
}else {
next = (char) (list.get(i) + 1);
}
list.add(next);
}
//判断是否大于等于,就直接返回
if (list.size()>=k){
return list.get(k-1);
}
//不大于就,查找继续扩大是否有符合的
return digui(list,k);
}
}