• 解码字母到整数映射


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

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

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

     

    示例 1:

      输入:s = "10#11#12"
      输出:"jkab"
      解释:"j" -> "10#" , "k" -> "11#" , "a" -> "1" , "b" -> "2".
    示例 2:

      输入:s = "1326#"
      输出:"acz"
    示例 3:

      输入:s = "25#"
      输出:"y"
    示例 4:

      输入:s = "12345678910#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#"
      输出:"abcdefghijklmnopqrstuvwxyz"

     

    代码:

      

    #include<iostream>
    // #include <algorithm>
    #include<bits/stdc++.h>
    using namespace std;
    string freqAlphabets(string s){
        string str;
        int len = s.length();
        //倒过来处理简单,不建议顺序进行,否则要多次判断
        for (int i = len-1; i >=0;)
        {
            if (s[i]=='#')
            {
                int value = (s[i-2]-'0')*10+(s[i-1]-'0');
                str+=(value+'a'-1);
                //减3 要算上'#','#'前面两个字符已经用过了,所以减3
                i=i-3;
    
            }else{
                int value = (s[i]-'0');
                str.push_back(value+'a'-1);
                i=i-1;
            }
        }
        // #include <algorithm>
        reverse(str.begin(),str.end());
        return str;
    }
    
    int main(){
        string s;
        cin>>s;
        cout<<freqAlphabets(s)<<endl;
    
    }

     

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/12806296.html

  • 相关阅读:
    To be a master II.
    To be a master.
    快速排序
    选择排序
    冒泡排序
    Myeclipse 2013 Pro 激活工具
    Java多线程
    设计模式:动态代理
    面向对象
    新安装mysql修改密码,远程访问授权
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/12806296.html
Copyright © 2020-2023  润新知