Alice 和 Bob 正在玩一个游戏。最初,Alice 有一个字符串 word = "a"
。
给定一个正整数 k
。
现在 Bob 会要求 Alice 执行以下操作 无限次 :
- 将
word
中的每个字符 更改 为英文字母表中的 下一个 字符来生成一个新字符串,并将其 追加 到原始的word
。
例如,对 "c"
进行操作生成 "cd"
,对 "zb"
进行操作生成 "zbac"
。
在执行足够多的操作后, word
中 至少 存在 k
个字符,此时返回 word
中第 k
个字符的值。
注意,在操作中字符 'z'
可以变成 'a'
。
示例 1:
输入:k = 5
输出:"b"
解释:
最初,word = "a"
。需要进行三次操作:
- 生成的字符串是
"b"
,word
变为"ab"
。 - 生成的字符串是
"bc"
,word
变为"abbc"
。 - 生成的字符串是
"bccd"
,word
变为"abbcbccd"
。
示例 2:
输入:k = 10
输出:"c"
提示:
1 <= k <= 500
模拟:
class Solution {
public:
char kthCharacter(int k) {
string word = "a"; // 初始字符串
while (word.length() < k) {
string nextWord = ""; // 新生成的字符串
for (char c : word) {
nextWord += (c == 'z') ? 'a' : (c + 1);
}
word += nextWord; // 附加生成的字符串
}
return word[k - 1];
}
};
class Solution {
public:
char kthCharacter(int k) {
vector<char> v;
v.push_back('a');
while(v.size()<k){
int cursize = v.size();//每次改变数组长度
for(int i=0;i<cursize;i++){
char newc = (v[i] =='z') ? 'a' : (v[i]+1);
v.push_back(newc);// 将新字符附加到 vector
}
}
return v[k-1];
}
};