将置换方法从 Java 转换为 JavaScript
Convert permute method from Java to JavaScript
我实现了一个 Java 代码,用于排列组合字符串与输入 str= "word1 word2 word3"
然后输出为:
arr[0]="word1 word2"
arr[1]="word1 word3"
arr[2]="word1 word2 word3"
arr[3]="word2 word1"
arr[4]="word2 word1 word3"
arr[5]="word2 word3 word1"
arr[6]="word3 word1"
arr[7]="word3 word1 word2"
arr[8]="word3 word2 word1"
这是Java代码:
private static void permute(String[] ss, boolean[] used, String res, int level, List<String> list) {
if (level == ss.length && res != ""){
list.add(res);
return;
}
for (int i = 0; i < ss.length; i++) {
// Check if the string is currently used
if (used[i]) {
continue;
}
// Check if res is empty or a single word
if(level > 1)
list.add(res);
used[i] = true;
permute(ss, used, res + " " + ss[i], level + 1, list);
used[i] = false;
}
}
public static List<String> PermuteWords(String s){
String[] ss = s.split(" ");
boolean[] used = new boolean[ss.length];
String res = "";
List<String> list = new ArrayList<String>();
permute(ss, used, res, 0, list);
return list;
}
转JS代码时,不知道这段代码有什么错误:
function permute(ss, used, res, level, list){
if(level==ss.lenght&&res!==""){
list.add(res);
return;
}
for(var i=0; i<ss.lenght; i++){
if (used[i]===true){
continue;
}
if(level>1){
list.add(res);
used[i]=true;
permute(ss, used, res+" "+ss[i], level+1, list)
used[i]=false;
}
}
}
function permuteword(s){
var ss;
for(var i=0; i<s.length;i++){
ss[i]=s[i];
}
var used;
for(var j=0; j<s.length;j++){
used[j]=false;
}
var result;
permute(ss, used, res, 0, result);
return result;
}
Java 和 Javascript 听起来几乎一样,但事实并非如此。他们采用不同的方法做不同的事情。如果在 Java 中您正在检查控制台是否存在 运行 程序的错误,那么在 Java 脚本中您可以在浏览器控制台中检查错误(使用 打开控制台F12)
填充数组
Java脚本数组没有 add()
方法。要为其添加值,请使用 push
:
list.push(res)
填充数组#2
在 permuteword()
函数中,您试图填充未初始化的变量 ss
。编译器不明白你想把那个值放在哪里。将 ss
初始化为空数组:
var ss = [];
打字错误
在第一个 for
循环中,您有 ss.lenght
。解决这个问题。始终检查拼写错误。
额外
在 permuteword()
中,您将 res
传递给 permute()
函数,尽管您没有在函数中定义它。如果 res
是在函数之外定义的全局变量,事情就会起作用。
并利用该浏览器控制台。每个 Java 脚本开发人员(从新手到专业人士)都始终打开它!
我 运行 couchdb 和 cloudant 中的代码显示了我错过检查语法的一般错误。我将代码修改为:
function permute(ss, used, res, level, list){
if(level==ss.lenght&&res!==""){
list.push(res);
return;
}
for(var i=0; i<ss.length; i++){
if (used[i]===true){
continue;
}
if(level>1){
list.push(res);
used[i]=true;
permute(ss, used, res+" "+ss[i], level+1, list)
used[i]=false;
}
}
}
function permuteword(s){
var ss=[];
for(var i=0; i<s.length;i++){
ss[i]=s[i];
}
var used=[];
for(var j=0; j<s.length;j++){
used[j]=false;
}
res="";
var result=[];
permute(ss, used, res, 0, result);
return result;
}
function(doc){
var list=permuteword("word1 word2 word3");
for(var i=0; i<list.length; i++){
index("default", list[i],{store, true});
}
}
但是,我仍然遇到如下错误:
{"error":"{nocatch,{compilation_error,<<\"Expression does not eval to a function. ((new String(\"function permute(ss, used, res, level, list){\r\n if(level==ss.lenght&&res!==\\"\\"){\r\n list.push(res);\r\n return;\r\n }\r\n\r\n for(var i=0; i1){\r\n list.push(res);\r\n used[i]=true;\r\n permute(ss, used, res+\\" \\"+ss[i], level+1, list)\r\n used[i]=false;\r\n }\r\n }\r\n}\r\nfunction permuteword(s){\r\n var ss=[];\r\n ss=s.split(\\" \\");\r\n var used=[];\r\n for(var j=0; j>}}","reason":"[{couch_os_process,prompt,3,[{file,\"src/couch_os_process.erl\"},{line,65}]},\n {dreyfus_index_updater,update,2,\n [{file,\"src/dreyfus_index_updater.erl\"},{line,42}]}]"}
我实现了一个 Java 代码,用于排列组合字符串与输入 str= "word1 word2 word3"
然后输出为:
arr[0]="word1 word2"
arr[1]="word1 word3"
arr[2]="word1 word2 word3"
arr[3]="word2 word1"
arr[4]="word2 word1 word3"
arr[5]="word2 word3 word1"
arr[6]="word3 word1"
arr[7]="word3 word1 word2"
arr[8]="word3 word2 word1"
这是Java代码:
private static void permute(String[] ss, boolean[] used, String res, int level, List<String> list) {
if (level == ss.length && res != ""){
list.add(res);
return;
}
for (int i = 0; i < ss.length; i++) {
// Check if the string is currently used
if (used[i]) {
continue;
}
// Check if res is empty or a single word
if(level > 1)
list.add(res);
used[i] = true;
permute(ss, used, res + " " + ss[i], level + 1, list);
used[i] = false;
}
}
public static List<String> PermuteWords(String s){
String[] ss = s.split(" ");
boolean[] used = new boolean[ss.length];
String res = "";
List<String> list = new ArrayList<String>();
permute(ss, used, res, 0, list);
return list;
}
转JS代码时,不知道这段代码有什么错误:
function permute(ss, used, res, level, list){
if(level==ss.lenght&&res!==""){
list.add(res);
return;
}
for(var i=0; i<ss.lenght; i++){
if (used[i]===true){
continue;
}
if(level>1){
list.add(res);
used[i]=true;
permute(ss, used, res+" "+ss[i], level+1, list)
used[i]=false;
}
}
}
function permuteword(s){
var ss;
for(var i=0; i<s.length;i++){
ss[i]=s[i];
}
var used;
for(var j=0; j<s.length;j++){
used[j]=false;
}
var result;
permute(ss, used, res, 0, result);
return result;
}
Java 和 Javascript 听起来几乎一样,但事实并非如此。他们采用不同的方法做不同的事情。如果在 Java 中您正在检查控制台是否存在 运行 程序的错误,那么在 Java 脚本中您可以在浏览器控制台中检查错误(使用 打开控制台F12)
填充数组
Java脚本数组没有 add()
方法。要为其添加值,请使用 push
:
list.push(res)
填充数组#2
在 permuteword()
函数中,您试图填充未初始化的变量 ss
。编译器不明白你想把那个值放在哪里。将 ss
初始化为空数组:
var ss = [];
打字错误
在第一个 for
循环中,您有 ss.lenght
。解决这个问题。始终检查拼写错误。
额外
在 permuteword()
中,您将 res
传递给 permute()
函数,尽管您没有在函数中定义它。如果 res
是在函数之外定义的全局变量,事情就会起作用。
并利用该浏览器控制台。每个 Java 脚本开发人员(从新手到专业人士)都始终打开它!
我 运行 couchdb 和 cloudant 中的代码显示了我错过检查语法的一般错误。我将代码修改为:
function permute(ss, used, res, level, list){
if(level==ss.lenght&&res!==""){
list.push(res);
return;
}
for(var i=0; i<ss.length; i++){
if (used[i]===true){
continue;
}
if(level>1){
list.push(res);
used[i]=true;
permute(ss, used, res+" "+ss[i], level+1, list)
used[i]=false;
}
}
}
function permuteword(s){
var ss=[];
for(var i=0; i<s.length;i++){
ss[i]=s[i];
}
var used=[];
for(var j=0; j<s.length;j++){
used[j]=false;
}
res="";
var result=[];
permute(ss, used, res, 0, result);
return result;
}
function(doc){
var list=permuteword("word1 word2 word3");
for(var i=0; i<list.length; i++){
index("default", list[i],{store, true});
}
}
但是,我仍然遇到如下错误:
{"error":"{nocatch,{compilation_error,<<\"Expression does not eval to a function. ((new String(\"function permute(ss, used, res, level, list){\r\n if(level==ss.lenght&&res!==\\"\\"){\r\n list.push(res);\r\n return;\r\n }\r\n\r\n for(var i=0; i1){\r\n list.push(res);\r\n used[i]=true;\r\n permute(ss, used, res+\\" \\"+ss[i], level+1, list)\r\n used[i]=false;\r\n }\r\n }\r\n}\r\nfunction permuteword(s){\r\n var ss=[];\r\n ss=s.split(\\" \\");\r\n var used=[];\r\n for(var j=0; j>}}","reason":"[{couch_os_process,prompt,3,[{file,\"src/couch_os_process.erl\"},{line,65}]},\n {dreyfus_index_updater,update,2,\n [{file,\"src/dreyfus_index_updater.erl\"},{line,42}]}]"}