Javascript 第一个堆栈溢出问题每日编码问题7
我正在研究我的日常编码问题7,很难找到一种方法来测试这个算法,看看它是否能工作。 问题是: 早上好!这是您今天的编码面试问题 这个问题是Facebook提出的 给定映射a=1,b=2。。。z=26,对于编码的消息,计算其解码方式的数量 例如,消息“111”将给出3,因为它可以被解码为“aaa”、“ka”和“ak”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
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!为什么不试着对一些测试运行代码,看看它是否符合您的期望?