【问题标题】:wrong boolean assignment - anagrams algorithm错误的布尔赋值 - 字谜算法
【发布时间】:2015-11-04 03:30:36
【问题描述】:

我知道您可能知道更好更快的方法,但请原谅 - 我正在学习...

我的问题是这个方法应该......但不是我现在的代码......如果特定单词的所有检查字母都存在于第二个列表中的检查单词中,则返回布尔“字谜”TRUE......

我的布尔值仍然是最后一个检查的字母状态,请帮忙。

for (String aWord : aWordsList){ //main List positions loop
                    tempWordsList = new ArrayList<String>(aWordsList);;

//set anagram TRUE if all letters of examined word found in temp List
                boolean anagram = true; 
                    for (int a=0; a<tempWordsList.size(); a++){ //temp List word loop
                    anagram = true;
                        for (int i=0; i<aWord.length(); i++){ //main List word Letters loop
                            anagram = true;
                            boolean letterFound = true;

                            for (int letter=0; letter < tempWordsList.get(a).length(); letter++){ //temp List word Letters loop

                                anagram = true;
                                String checkedTempWord = tempWordsList.get(a);
                                char checkedLetter = aWord.charAt(i);
                                char checkedTempLetter = tempWordsList.get(a).charAt(letter);

                                    if (aWord.charAt(i)==tempWordsList.get(a).charAt(letter)){
                                        letterFound = true;
                                        break;
                                        // OK, jump out and check next letter
                                    }else{
                                        letterFound= false;
                                    }

                            }
                            if (anagram == true && letterFound==true) {
                                anagram=true;
                            }else{
                                anagram=false;
                            }
                            System.out.println(aWord +" in "+ tempWordsList.get(a) + " : " + aWord.charAt(i) + " " + letterFound); 

                        }
                        System.out.println(aWord + " has anagram in " + tempWordsList.get(a) + ": " + anagram);
                        System.out.println();
                    }
                    System.out.println(aWord + " " + tempWordsList + " " + anagram);
                }
            }


        }

【问题讨论】:

  • 请正确格式化您的代码。 (使用在线格式化程序)。为什么第二行有第二个;tempWordsList = new ArrayList&lt;String&gt;(aWordsList);;
  • 我发现我必须消除不同大小的单词
  • 您是否应该将 aWordsList 中的单词与不同列表中的单词进行比较? tempWordsList = new ArrayList(aWordsList) 创建一个与 aWordsList 内容相同的新列表
  • 是的,我把它缩短的部分在上面被删除了: for (Iterator iterator = tempWordsList.iterator(); iterator.hasNext();) { String string = iterator.next( ); if (string.equals(aWord)) { // 从迭代器和列表中移除当前元素。迭代器.remove(); }
  • 正如所写的那样,您的代码将始终为 aWordsList 中的每个单词找到至少一个字谜,因为单词本身就符合条件。

标签: java


【解决方案1】:

我想我发现了错误:太多次 anagram 被设置为 true... 这段代码看起来对我有用:

//set anagram TRUE if all letters of examined word found in temp List
            boolean anagram = true;
                for (int a=0; a<tempWordsList.size(); a++){ //temp List word loop
                anagram = true;
                    for (int i=0; i<aWord.length(); i++){ //main List word Letters loop
                        //anagram = true;
                        boolean letterFound = true;

                        for (int letter=0; letter < tempWordsList.get(a).length(); letter++){ //temp List word Letters loop

                            //anagram = true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2012-11-22
    • 1970-01-01
    • 2013-07-07
    • 2023-03-08
    • 2013-02-08
    • 2016-09-28
    • 2021-01-29
    相关资源
    最近更新 更多