Javascript - 获取字符串的所有唯一排列(特殊情况)
Javascript - Get all unique permutations of a string (special case)
给定一个字符串,如“这是一个带空格的搜索”,我想 return 该字符串的所有排列,其中空格被破折号替换。例如,这是我想要的结果:
["这是一个带空格的搜索"]
["this-is-a-search-with", "spaces"]
["this", "is-a-search-with-spaces"]
["this-is", "a-search-with-spaces"]
[“这是一个搜索”,“带空格”]
["this-is-a", "search-with-spaces"]
...等等。
我可以做一半,但问题是它匹配 ["query1-query2", "query3"] 但不匹配 ["query1", "query2-query3"]。
这是我当前的代码:
const sliced = query.split(/ +/g)
let permutations = []
for (let i = 1; i <= sliced.length; i++) {
let permuteArr = []
for (let j = 0; j < sliced.length; j+=i) {
permuteArr.push(sliced.slice(j, j+i).join("-"))
}
permutations.push(permuteArr)
}
谢谢你的帮助。
这是一个产生组合的递归生成器:
function permutations(query) {
function* iterRecur(sliced) {
if (sliced.length == 1) return yield sliced;
for (const result of iterRecur(sliced.slice(1))) {
yield [sliced[0] + "-" + result[0], ...result.slice(1)];
yield [sliced[0], ...result];
}
}
const sliced = query.split(/ +/g);
return [...iterRecur(sliced)];
}
console.log(permutations("this is a test"));
给定一个字符串,如“这是一个带空格的搜索”,我想 return 该字符串的所有排列,其中空格被破折号替换。例如,这是我想要的结果:
["这是一个带空格的搜索"]
["this-is-a-search-with", "spaces"]
["this", "is-a-search-with-spaces"]
["this-is", "a-search-with-spaces"]
[“这是一个搜索”,“带空格”]
["this-is-a", "search-with-spaces"]
...等等。
我可以做一半,但问题是它匹配 ["query1-query2", "query3"] 但不匹配 ["query1", "query2-query3"]。
这是我当前的代码:
const sliced = query.split(/ +/g)
let permutations = []
for (let i = 1; i <= sliced.length; i++) {
let permuteArr = []
for (let j = 0; j < sliced.length; j+=i) {
permuteArr.push(sliced.slice(j, j+i).join("-"))
}
permutations.push(permuteArr)
}
谢谢你的帮助。
这是一个产生组合的递归生成器:
function permutations(query) {
function* iterRecur(sliced) {
if (sliced.length == 1) return yield sliced;
for (const result of iterRecur(sliced.slice(1))) {
yield [sliced[0] + "-" + result[0], ...result.slice(1)];
yield [sliced[0], ...result];
}
}
const sliced = query.split(/ +/g);
return [...iterRecur(sliced)];
}
console.log(permutations("this is a test"));