其他分享
首页 > 其他分享> > 0880. Decoded String at Index (M)

0880. Decoded String at Index (M)

作者:互联网

Decoded String at Index (M)

题目

An encoded string S is given. To find and write the decoded string to a tape, the encoded string is read one character at a time and the following steps are taken:

Now for some encoded string S, and an index K, find and return the K-th 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:


题意

将给定字符串按照指定规则展开后,取指定位置的字符。

思路

参考[LeetCode] 880. Decoded String at Index 在位置坐标处解码字符串


代码实现

Java

class Solution {
    public String decodeAtIndex(String S, int K) {
        long size = 0;
        int index = 0;

        while (index < S.length() && size < K) {
            char c = S.charAt(index);
            size = Character.isDigit(c) ? size * (c - '0') : size + 1;
            index++;
        }

        while (--index >= 0) {
            char c = S.charAt(index);
            if (Character.isDigit(c)) {
                size /= c - '0';
                K = (int)((K - 1) % size + 1);
            } else {
                if (K == size) {
                    return S.charAt(index) + "";
                }
                size--;
            }
        }

        return "";
    }
}

标签:decoded,Decoded,String,index,0880,letter,string,size
来源: https://www.cnblogs.com/mapoos/p/14164854.html