|
|
@@ -0,0 +1,39 @@
|
|
|
+package leetcode.p1545;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ProjectName: LeetCode
|
|
|
+ * @FileName: Solution
|
|
|
+ * @Author: 杨逸
|
|
|
+ * @Data:2026/3/3 18:46
|
|
|
+ * @Description: https://leetcode.cn/problems/find-kth-bit-in-nth-binary-string/description/
|
|
|
+ * 1545. 找出第 N 个二进制字符串中的第 K 位
|
|
|
+ */
|
|
|
+public class Solution {
|
|
|
+ public char findKthBit(int n, int k) {
|
|
|
+ char result = '0';
|
|
|
+ StringBuilder stringBuilder = new StringBuilder("0");
|
|
|
+ for (int i = 1; i < n; i++) {
|
|
|
+ if (stringBuilder.length() >= k) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ StringBuilder reverse = new StringBuilder(invert(stringBuilder.toString())).reverse();
|
|
|
+ stringBuilder
|
|
|
+ .append('1')
|
|
|
+ .append(reverse);
|
|
|
+ }
|
|
|
+ result = stringBuilder.charAt(k-1);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String invert(String str) {
|
|
|
+ StringBuilder stringBuilder = new StringBuilder(str);
|
|
|
+ for (int i = 0; i < stringBuilder.length(); i++) {
|
|
|
+ if (stringBuilder.charAt(i) == '0') {
|
|
|
+ stringBuilder.setCharAt(i, '1');
|
|
|
+ } else {
|
|
|
+ stringBuilder.setCharAt(i, '0');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return stringBuilder.toString();
|
|
|
+ }
|
|
|
+}
|