我试图从字典列表中找到一个词。字母可以按任何顺序排列,但任何字母只能使用一次。我已经在 Android 上用 java 开发了一个算法,但它并没有真正起作用。--> dict 列表中的所有单词在我的原因中都已经小写了
这是我现有的代码,但它不会向我显示匹配的单词作为输出,返回的列表始终为空。
private int matches = 0;
private ArrayList<String> words;
private ArrayList<String> check(String charArr0) {
String charArr = charArr0.toLowerCase();
char[] cs0 = charArr.toCharArray();
ArrayList<Character> cs = new ArrayList<>();
for(char c : cs0)
cs.add(c);
all = words.size();
ArrayList<String> out = new ArrayList<>();
for(String w0 : words) {
String w = w0.toLowerCase();
int len = w.length();
if(len >= 2) {
//only if len is 2++
matches = 0;
checkNext(cs, 0, w, len);
//if matches are as high as words lenght, it is fully avaivable
if(matches >= len)
out.add(w);
}
}
return out;
}
private void checkNext(ArrayList<Character> cs, int pos, String w, int len) {
if(pos < len) {
char twc = w.charAt(pos);
boolean cont = false;
int cIdx = -1, curi = 0;
for(char c : cs) {
if(c == twc){
cont = true;
cIdx = curi;
break;
}
curi += 1;
}
if(cont) {
matches += 1;
cs.remove(cIdx);
checkNext(cs, pos + 1, w, len);
}
}
}
问题是,这段代码中的错误是什么,我怎么可能从给定的字符数组中的列表中获取一个单词(任何字符只使用一次,顺序无关紧要)?
DIEA
相关分类