Skip to main content
Back to problems
#779
Medium Algorithms

K th symbol in grammar

Math Bit Manipulation Recursion
48.1% acceptance
Feb 21, 2026
4127
425
We build a table of n rows (1-indexed). We start by writing 0 in the 1st row. Now in every subsequent row, we look at the previous row and replace each occurrence of 0 with 01, and each occurrence of 1 with 10. For example, for n = 3, the 1st row is 0, the 2nd row is 01, and the 3rd row is 0110. Given two integer n and k, return the kth (1-indexed) symbol in the nth row of a table of n rows.

Solution

Rust
Time O(1)
Space O(1)
LeetCode
solution.rs
/*
 * We build a table of n rows (1-indexed). We start by writing 0 in the 1st row. Now in every subsequent row, we look at the previous row and replace each occurrence of 0 with 01, and each occurrence of 1 with 10.
 * For example, for n = 3, the 1st row is 0, the 2nd row is 01, and the 3rd row is 0110.
 * Given two integer n and k, return the kth (1-indexed) symbol in the nth row of a table of n rows.
 * Example 1:
 * Input: n = 1, k = 1
 * Output: 0
 * Explanation: row 1: 0
 * Example 2:
 * Input: n = 2, k = 1
 * Output: 0
 * Explanation:
 * row 1: 0
 * row 2: 01
 * Example 3:
 * Input: n = 2, k = 2
 * Output: 1
 * Explanation:
 * row 1: 0
 * row 2: 01
 * Constraints:
 * 1 <= n <= 30
 * 1 <= k <= 2n - 1
 */
impl Solution {
  pub fn kth_grammar(_n: i32, k: i32) -> i32 {
    ((k - 1) as u32).count_ones() as i32 % 2
  }
}