【发布时间】:2017-08-07 01:22:27
【问题描述】:
我有一个字符串“racecarzz”,我想从该字符串中生成每个字符的所有可能组合,这些组合可以以相同的方式前后读取(回文)。
检查回文并不难string.split('').reverse().join(''),但生成可能的组合对我来说非常具有挑战性。
输入:
str = 'racecarzz'
输出:
arr = ['rar', 'cec', 'raar', 'caac', 'craarc', 'racecar', 'raczezcar', 'zracecarz', ...]`
我已经尝试了 get-all-combinations-for-a-string 的解决方案,但它仍然缺少一些像“zracecarz”、“raczezcar”等...
var combinations = function (string) {
var result = [];
var loop = function (start,depth,prefix) {
for (var i=start; i<string.length; i++) {
var next = prefix+string[i];
if (depth > 0) {
loop(i+1,depth-1,next);
} else {
//check for Palindrome
if (next == next.split('').reverse().join('')) {
result.push(next);
}
}
}
}
for (var i=0; i<string.length; i++) {
loop(0,i,'');
}
//remove duplicate
result = result.filter(function(val, ind){
return result.indexOf(val)==ind;
});
return result;
}
document.querySelector('#demo').innerHTML = combinations('racecarzz').join('<br>');
<div id="demo"></div>
以上回报:
["r", "a", "c", "e", "c", "a", "r", "z", "z", "rr", "aa", "cc", "zz", "rar", "rcr", "rer", "rcr", "rar", "aca", "aea", "aca", "cec", "raar", "rccr", "acca", "racar", "raear", "racar", "rcecr", "aceca", "raccar", "racecar"]
【问题讨论】:
-
“但生成可能的组合对我来说非常具有挑战性。” 您在代码和/或算法过程的哪个部分遇到问题?您能否包括您尝试解决查询的代码和/或算法?
-
@RobbyCornelissen 链接问题中提到的“回文”在哪里?
-
你可以找到所有的排列,并一一检查回文
-
@guest271314 OP 声明:检查回文并不困难 [...] 但生成可能的组合对我来说非常具有挑战性。
-
@guest271314 显然你和土豆皮一起投票支持复制品;当 SO 这样做时,这很令人困惑。我的评论是针对他的。
标签: javascript string algorithm permutation palindrome