Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 第一个堆栈溢出问题每日编码问题7_Javascript - Fatal编程技术网

Javascript 第一个堆栈溢出问题每日编码问题7

Javascript 第一个堆栈溢出问题每日编码问题7,javascript,Javascript,我正在研究我的日常编码问题7,很难找到一种方法来测试这个算法,看看它是否能工作。 问题是: 早上好!这是您今天的编码面试问题 这个问题是Facebook提出的 给定映射a=1,b=2。。。z=26,对于编码的消息,计算其解码方式的数量 例如,消息“111”将给出3,因为它可以被解码为“aaa”、“ka”和“ak” function decode_cnt_no_zero(message) { let length = message.length if (length <=1) { r

我正在研究我的日常编码问题7,很难找到一种方法来测试这个算法,看看它是否能工作。 问题是:

早上好!这是您今天的编码面试问题

这个问题是Facebook提出的

给定映射a=1,b=2。。。z=26,对于编码的消息,计算其解码方式的数量

例如,消息“111”将给出3,因为它可以被解码为“aaa”、“ka”和“ak”

 function decode_cnt_no_zero(message) {

let length = message.length

if (length <=1) { return 1 }

if (length >=2) { var parsed = parseInt(message.substring(0,2),10) if (parsed >=0 && parsed <= 26) { return (decode_cnt_no_zero(message.substring(1,length)) + decode_cnt_no_zero(message.substring(2, length))) } return decode_cnt_no_zero(message.substring(1, length)) } }
您可以假设消息是可解码的。例如,不允许使用“001”。 这就是我找到的解决办法。你知道我怎样才能确认这会被破解吗

function numDecodingsRHelper(message, index) {
  if (index === message.length) return 1;
  if (message.charAt(index) === '0') return 0;

  // Single Number
  let totalDecodings = numDecodingsRHelper(message, index + 1);
  if (index < message.length - 1) {
    // Double Number
    const doubleNum = parseInt(message.substring(index, index + 2), 10);

    if (doubleNum >= 10 && doubleNum <= 26)
      totalDecodings += numDecodingsRHelper(message, index + 2);
  }
  return totalDecodings;
} 

这是更好的解决办法。其他几种解决方案的问题是,我发现它们只返回字符串输入中可能的字母序列列表,而不是返回作为整数的总数。如中所示,如问题“111”中使用的示例,返回3,但我找到的大多数解决方案都会返回类似“aaa”、“ka”和“ak”的列表

 function decode_cnt_no_zero(message) {

let length = message.length

if (length <=1) { return 1 }

if (length >=2) { var parsed = parseInt(message.substring(0,2),10) if (parsed >=0 && parsed <= 26) { return (decode_cnt_no_zero(message.substring(1,length)) + decode_cnt_no_zero(message.substring(2, length))) } return decode_cnt_no_zero(message.substring(1, length)) } }

欢迎来到SO!为什么不试着对一些测试运行代码,看看它是否符合您的期望?