Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
grandyang opened this issue May 30, 2019 · 0 comments
Open

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

grandyang opened this issue May 30, 2019 · 0 comments

Comments

@grandyang
Copy link
Owner

grandyang commented May 30, 2019

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 打赏


---|---

@grandyang grandyang changed the title [LeetCode] 1309. Missing Problem [LeetCode] 1309. Decrypt String from Alphabet to Integer Mapping Nov 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant