Skip to content

[LeetCode] 1309. Decrypt String from Alphabet to Integer Mapping #1309

Open
@grandyang

Description

@grandyang

You are given a string s formed by digits and '#'. We want to map s to English lowercase characters as follows:

  • Characters ('a' to 'i') are represented by ('1' to '9') respectively.
  • Characters ('j' to 'z') are represented by ('10#' to '26#') respectively.

Return  the string formed after mapping.

The test cases are generated so that a unique mapping will always exist.

Example 1:

Input: s = "10#11#12"
Output: "jkab"
Explanation: "j" -> "10#" , "k" -> "11#" , "a" -> "1" , "b" -> "2".

Example 2:

Input: s = "1326#"
Output: "acz"

Constraints:

  • 1 <= s.length <= 1000
  • s consists of digits and the '#' letter.
  • s will be a valid string such that mapping is always possible.

这道题给了一个数字字符串,让解码成字母串,指定的规则是1到9分别对应a到i,j到z分别对应从 10#26#,注意后面跟的井号表示这是个两位数,不然不好区分 26 到底是z,还是b和f。那么在解码的时候,这个井号就特别重要,因为它代表着解码的方式,而且对于当前位置来说,它的位置也是固定的,所以解码的方法也就有了:判断下下一个字符是否是井号,是的话解码一个两位数,当然要首先保证不会越界,需判断 i+2 小于n,同时 s[i+2] 是井号,然后即可解析出两位数,转化为对应的字母,之后别忘了i要自增2,因为要跳过井号。否则的话就只解析当前位置的数字,转化为a到i之间的字母,参见代码如下:

class Solution {
public:
    string freqAlphabets(string s) {
        string res = "";
        int n = s.size();
        for (int i = 0; i < n; ++i) {
            if (i + 2 < n && s[i + 2] == '#') {
                res += (stoi(s.substr(i, 2)) - 1 + 'a');
                i += 2;
            } else {
                res += (s[i] - '0' - 1 + 'a');
            }
        }
        return res;
    }
};

Github 同步地址:

#1309

参考资料:

https://leetcode.com/problems/decrypt-string-from-alphabet-to-integer-mapping/

https://leetcode.com/problems/decrypt-string-from-alphabet-to-integer-mapping/discuss/736309/C%2B%2B-0ms-solution

https://leetcode.com/problems/decrypt-string-from-alphabet-to-integer-mapping/discuss/500231/HashMap-Solution-JAVA

LeetCode All in One 题目讲解汇总(持续更新中...)

(欢迎加入博主的知识星球,博主将及时答疑解惑,并分享刷题经验与总结,快快加入吧~)

知识星球 喜欢请点赞,疼爱请打赏❤️~.~

微信打赏

|

Venmo 打赏


---|---

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      pFad - Phonifier reborn

      Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

      Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy