如何在具有相同字母但顺序不同的单词数组中搜索单词

时间:2019-01-30 02:22:00

标签: java

下面的代码可以正常工作,我只是无法理解代码中的那一部分

if (temp.indexOf(Search.charAt(j)) == -1){
    cpt=0;
} else {
    cpt++;
}

那是什么意思?

public static void main(String[] args) {
    String Search="loop";
    String[] words={"loop","pool","lopo","book","kobo","oopl","olop","opol"};
    int cpt=0;
    String temp;
    for(int i=0;i<words.length;i++){
        temp=words[i];
        for (int j=0 ; j<Search.length();j++) {
            if (temp.indexOf(Search.charAt(j))==-1){
                cpt=0;
            } else {
                cpt++;
            }
            if (cpt==4){
                System.out.println("-> :"+ temp);
                cpt=0;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

代码的想法是遍历列表中的每个单词(称为temp),并计算temp中出现的Search中有多少个字符。

例如“ loop”和“ pool”都具有1个“ p”,1个“ l”和2个“ p”个字符。

但这并不完全正确...

此行if (temp.indexOf(Search.charAt(j))==-1)正在检查temp中是否存在Search [j]

但应该更像

if(临时在某个索引处有这个Search [j]字符(称为t),而t以前没有使用过)

对于“循环”和“垂降”之类的情况,这应该会失败
另外,您正在对代码中的数字4进行硬编码,应将其替换为Search的长度

我建议使用地图。

答案 1 :(得分:0)

我们知道方法的索引在两个条件下起作用.....

条件1-如果给定字符存在于字符串中,则表示               字符在索引0到string.lenth-1索引处可用。

条件2-如果在字符串中不存在给定字符,则表示该字符               从0索引到整个字符串在该字符串中不可用,               返回-1也是如此。