原始代码:
// function to generate and print all N! permutations of $str. (N = strlen($str)).
function permute($str,$i,$n) {
if ($i == $n)
print "$str\n";
else {
for ($j = $i; $j < $n; $j++) {
swap($str,$i,$j);
permute($str, $i+1, $n);
swap($str,$i,$j); // backtrack.
}
}
}
// function to swap the char at pos $i and $j of $str.
function swap(&$str,$i,$j) {
$temp = $str[$i];
$str[$i] = $str[$j];
$str[$j] = $temp;
}
$str = "hey";
permute($str,0,strlen($str)); // call the function.
我想重用此代码并为我的 jquery 进行排列,所以这是我的代码:
div id="wrapper">
<input type="text" id="word">
</div>
<div id="combinations">
<p>
</p>
</div>
<script>
function permute(str,i,n) {
if (i == n)
$('p').append(str+" ");
else {
for (j = i; j < n; j++) {
swap(str,i,j);
permute(str, i+1, n);
swap(str,i,j); // backtrack.
}
}
}
// function to swap the char at pos $i and $j of $str.
function swap(str,i,j) {
var temp = str[i];
str[i] = str[j];
str[j] = temp;
}
$('#word').on('input',function(e){
var str = $("#word").val();
if(str == ''){
$('p').empty();
}
if(str.length != strOld){
$('p').empty();
}
var strOld = str.length;
permute(str, 0,str.length)
});
</script>
因此,在该段落中,我想显示用户输入的所有排列,因此如果用户输入 AB,它将显示 AB BA 等等,我不太确定如何将 &$str 从原始的更改为 JQuery我读过一些关于在 JS/JQuery 中通过引用传递的其他堆栈问题,但我无法真正理解它。
现在,此代码不会产生任何错误,它只是显示用户输入的输入字段的精确副本。
更新:我根据您的建议尝试过的操作:
function permute(str,i,n) {
if (i == n)
$('p').append(str+" ");
else {
for (j = i; j < n; j++) {
str = swap(str,i,j);
permute(str, i+1, n);
str = swap(str,i,j); // backtrack.
}
}
}
function swap(str,i,j) {
str = str.split("");
var temp = str[i];
str[i] = str[j];
str[j] = temp;
return str.join("");
}
var str = "hey";
permute(str, 0,str.length)
它只显示了嘿,没有其他内容
最佳答案
这是 PHP 代码的 JS 版本:
function permute( str, i, n ) {
if ( i == n ){
console.log(str);
} else {
for ( var j = i; j < n; j++) {
str = swap( str, i, j );
permute( str, i+1, n );
str = swap( str, i, j ); // backtrack.
}
}
}
// function to swap the char at pos $i and $j of $str.
function swap( str, i, j ) {
str = str.split("");
var temp = str[i];
str[i] = str[j];
str[j] = temp;
return str.join("");
}
var str = "hey";
permute( str, 0, str.length ); // call the function.
这是JSFiddle
关于javascript - 在 JQuery 中重用 PHP 代码并通过引用传递问题的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34539013/