问:
给你一个字符串 s,它由数字(‘0’ - ‘9’)和 ‘#’ 组成。我们希望按下述规则将 s 映射为一些小写英文字符:
字符(‘a’ - ‘i’)分别用(‘1’ - ‘9’)表示。
字符(‘j’ - ‘z’)分别用(‘10#’ - ‘26#’)表示。
返回映射之后形成的新字符串。
题目数据保证映射始终唯一。
原题链接:https://leetcode.cn/problems/decrypt-string-from-alphabet-to-integer-mapping/
例:
输入:s = “10#11#12”
输出:“jkab”
答:
class Solution {
public String freqAlphabets(String s) {
char[] str = s.toCharArray();
StringBuilder sb = new StringBuilder();
for(int i = str.length - 1;i >= 0;i--){
if(str[i] == '#'){
sb.append((char)(str[--i] - '0' + (str[--i] - '0') * 10 + 'a' - 1));
}
else{
sb.append((char)(str[i] + '0'));
}
}
return sb.reverse().toString();
}
}