如何解决编码面试问题的有趣反转
这是一个流行的面试问题:
给定一个编码字符串,返回它的解码字符串。
编码规则是:k[encoded_string],其中方括号内的encoded_string正好重复k次。请注意,k 保证为正整数。
Input: s = "3[a]2[bc]"
Output: "aaabcbc"
可以通过巧妙地使用堆栈来解决。
我想反过来:给定一个解码的字符串,你能找到最佳编码的字符串吗?
即
Input: s = "aaabcbc"
Output: "3[a]2[bc]"
我有一种感觉,这可能比前一种情况要困难得多,您必须跟踪每个正在运行的子字符串。
或者有什么容易的方法吗?
解决方法
您可以利用正则表达式发挥创意,并将繁重的工作委托给正则表达式引擎。
这是一个 JavaScript 示例:
const d = "aaabcbc";
const e = d.replaceAll(/(.+)\1+/g,(a,b) => `${a.length / b.length}[${b}]`);
console.log(e);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。