123转为abc,lc,aw

前提:字符a-z 可以表示为 1-26
那么:abc 就可以表示为:123
那反过来,123就发现它可以表示成三种情况: abc,lc,aw
现在需要你实现一个函数 function decode(num) 输出所有情况

var MAP = ['', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

    function decode(num) {
      myDecode('', num);
    }
    
    // 采用前缀递归的方式
    function myDecode(prefix, str) {
      var len = str.length;
      if (len == 0) {
        console.log(prefix);
      } else if (len == 1) {
        console.log(prefix + MAP[parseInt(str)]);
      } else {
        // 20不能翻译为b,应该翻译为t
        // 而且不应该出现单独翻译0的地方,0需要与前面一位进行拼接
        if (str[1] == '0') {
          var pre = parseInt(str[0] + str[1]);
          if (pre < 30) {
            myDecode(prefix + MAP[pre], str.substring(2))
          } else {
            return;
          }
        } else {
          // 不管怎样,先将第一位看作单独的一位进行处理
          myDecode(prefix + MAP[str[0]], str.substring(1));
          // 然后判断前两位是否能够组成一个有效的字符,如果有效,则按两位处理
          var index = parseInt(str[0] + str[1]);
          if (index < 27) {
            myDecode(prefix + MAP[index], str.substring(2))
          }
        }
      }
    }
    decode('123') // abc aw lc
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,668评论 0 13
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 11,100评论 2 16
  • 又要开始新的一年工作了,正月初八正式上班,在上班之前我觉得有必要再理一理自己的思路。 1.昨天从家里出发,心里一直...
    木华益阅读 2,425评论 1 3
  • 文 | 静待花开 先讲两个真实的故事。 故事一:你坚持最长的一次健身是多久? 公司计划利用工作日的午休时间,为女职...
    职心眼儿阅读 9,526评论 46 162
  • 重阳茶语 2014.11.1 闰九月重阳节 适逢双重阳节过双休,回到家里,在阳台上捧起我的紫砂小壶。温暖的秋...
    深深的海洋阅读 3,663评论 0 0