【发布时间】:2013-03-13 01:13:03
【问题描述】:
我的问题类似于尚未回答的THIS 问题。
我怎样才能使我的代码(或任何可能建议的 javascript 代码?)找到已知字符串长度的所有可能的解决方案,其中多个缺失字符随着重复而变化?
我正在尝试获取已知字符长度的字符串并从该字符串中查找缺失的字符。例如:
var missing_string = "ov!rf!ow"; //where "!" are the missing characters
我希望运行具有特定数组的脚本,例如:
var r = new Array("A","B","C","D","E","F","G","H","I","J","K",
"L","M","N","O","P","Q","R","S","T","U","V",
"W","X","Y","Z",0,1,2,3,4,5,6,7,8,9);
找到所有可能的变化,重复这些缺失的字符以获得结果:
ovArfAow
ovBrfAow
ovCrfAow
...
ovBrfBow
ovBrfCow
...
etc //ignore the case insensitive, just to emphasize the example
当然,最终在所有重复的变化中找到 ovErfLow。
我已经能够使用 1 个(单个)缺失字符使其工作。但是,当我在我的代码中添加 2 个缺失字符时,它显然会为这两个缺失字符重复相同的数组字符,这对于重复来说非常有用,但我还需要找到不重复的字符,并且可能还需要 3-4 个缺失字符可能会或可能不会重复。这是我目前所拥有的:
var r = new Array("A","B","C","D","E","F","G","H","I","J","K",
"L","M","N","O","P","Q","R","S","T","U","V",
"W","X","Y","Z",0,1,2,3,4,5,6,7,8,9);
var missing_string = "he!!ow!r!d";
var bt_lng = missing_string.length;
var bruted="";
for (z=0; z<r.length; z++) {
for(var x=0;x<bt_lng;x++){
for(var y=0;y<r.length;y++){
if(missing_string.charAt(x) == "!"){
bruted += r[z];
break;
}
else if(missing_string.charAt(x) == r[y]){
bruted += r[y];
}
}
}
console.log("br: " + bruted);
bruted="";
}
只需一个“!”就可以很好地工作:
helloworAd
helloworBd
helloworCd
...
helloworLd
但是有 2 个或更多“!”,我得到:
heAAowArAd
heBBowBrBd
heCCowCrCd
...
heLLowLrLd
这对重复部分有好处,但我还需要在每个缺失的字符点测试所有可能的数组 M 个字符。
【问题讨论】:
-
你好像忘了问一个问题。您对这具体部分有什么问题? (“全部”或“开始工作”不是我问题的合适答案。
) 一个建议:问问自己,你将如何手动用铅笔和纸来做这件事。以两个缺失的字母开头。 -
我的问题是如何使我的代码(或可能建议的类似代码?)与重复变化的多个缺失字符一起工作。
-
您仍然没有提出问题。请edit您的问题并提出一个。首先要记住问题以问号结尾。 (我不应该如此努力地让您告诉我们您希望我们为您提供什么帮助,因为您是寻求我们帮助的人。):-) 我在完成整个事情时遇到了问题工作根本不具体。
-
您可能还想查看已编写的组合函数:mennovanslooten.nl/blog/post/70 然后添加此部分 stackoverflow.com/questions/881085/… 之后您将不得不遍历字符串和组合数组以及它的子数组获得您的解决方案
-
感谢您的链接,但是我已经对许多不同的组合函数功能进行了大量研究,但是我需要它在 javascript(没有 php、ruby 等)中并且没有扩展名,例如原型。
标签: javascript combinatorics brute-force cartesian-product repeat