LeetCode第3304题 - 找出第 K 个字符 I - 指南
解答
class Solution
{
public char kthCharacter(int k) {
int n = 0;
int v = 1;
while (v < k) {
v <<= 1;
++n;
}
String target = kthCharacterString(n);
return target.charAt(k - 1);
}
public String kthCharacterString(int n) {
if (n == 0) {
return "a";
}
String v = kthCharacterString(n - 1);
StringBuilder sb = new StringBuilder();
sb.append(v);
for (int i = 0; i < v.length();
++i) {
char c1 = v.charAt(i);
char c2 = (char) (c1 + 1);
if (c1 == 'z') {
c2 = 'a';
}
sb.append(c2);
}
return sb.toString();
}
}
总结
依据规则,得到目标字符串,然后获取目标位置的字符,算是暴力解题。
浙公网安备 33010602011771号