880. Decoded String at Index

Difficulty:
Related Topics:
Similar Questions:

    Problem

    You are given an encoded string s. To decode the string to a tape, the encoded string is read one character at a time and the following steps are taken:

    Given an integer k, return **the *kth* letter (1-indexed) in the decoded string**.

      Example 1:

    Input: s = "leet2code3", k = 10
    Output: "o"
    Explanation: The decoded string is "leetleetcodeleetleetcodeleetleetcode".
    The 10th letter in the string is "o".
    

    Example 2:

    Input: s = "ha22", k = 5
    Output: "h"
    Explanation: The decoded string is "hahahaha".
    The 5th letter is "h".
    

    Example 3:

    Input: s = "a2345678999999999999999", k = 1
    Output: "a"
    Explanation: The decoded string is "a" repeated 8301530446056247680 times.
    The 1st letter is "a".
    

      Constraints:

    Solution (Java)

    class Solution {
        public String decodeAtIndex(String s, int k) {
            long length = 0;
            for (char c : s.toCharArray()) {
                if (c >= 48 && c <= 57) {
                    length *= c - '0';
                } else {
                    ++length;
                }
            }
            for (int i = s.length() - 1; i >= 0; i--) {
                char c = s.charAt(i);
                k %= length;
                if (c >= 48 && c <= 57) {
                    length /= c - '0';
                } else if (k == 0) {
                    return String.valueOf(c);
                } else {
                    --length;
                }
            }
            return "";
        }
    }
    

    Explain:

    nope.

    Complexity: