解码字母到整数映射

题目:
给你一个字符串 s,它由数字(‘0’ - ‘9’)和 ‘#’ 组成。我们希望按下述规则将 s 映射为一些小写英文字符:

字符(‘a’ - ‘i’)分别用(‘1’ - ‘9’)表示。
字符(‘j’ - ‘z’)分别用(‘10#’ - ‘26#’)表示。
返回映射之后形成的新字符串。

题目数据保证映射始终唯一。

思路分析:
对字符串 s 进行顺序遍历。当遍历到位置 i 时,我们首先向后看两个字符,如果 s.charAt(i+2)存在且为 ‘#’,那么位置 i,i + 1 和 i + 2 表示一个 ‘j’ 到 ‘z’ 之间的字符,否则位置 i 表示一个 ‘a’ 到 ‘i’ 的字符。

class Solution {
    public String freqAlphabets(String s) {
        StringBuffer sb=new StringBuffer();
        int len=s.length();
        for(int i=0;i<len;i++){
            if((i+2)<len&&s.charAt(i+2)=='#'){
                sb.append((char)((s.charAt(i) - '0') * 10 + (s.charAt(i+1) - '1') + 'a'));
                i+=2;
            }else{
                sb.append((char)((s.charAt(i)-'1')+'a'));
            }
        }
        return sb.toString();
    }
}
发布了118 篇原创文章 · 获赞 12 · 访问量 2571

猜你喜欢

转载自blog.csdn.net/qq_42174669/article/details/104228105
今日推荐