有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用数组的字谜解算器的结束条件:Java

抱歉,如果这是一个有点愚蠢的问题,但我一直有点问题。该项目是一个超级字谜解算器,如果从键盘读取的第一个词组中的字母是从键盘读取的第二个词组中的某些字母的字谜,则返回true。我对该算法的想法是将字符串转换为数组,然后向下搜索第一个字符串的数组,并将每个字符与第二个数组中的每个字符进行比较,试图找到匹配项,如果找到,则将该字符的实例清空,这样就不能再次使用它。如果在第二个数组中搜索字母从未失败,则该方法将返回true;如果找不到字母,则返回false。不过,我不知道如何或在何处放置该返回语句,我画的是空白

class SuperAnagram {
   public boolean isSuperAnagram(String s, String st){
      s.toLowerCase();
      st.toLowerCase();
      char[] array1 = s.toCharArray();
      char[] array2 = st.toCharArray();
      for(int i = 0;(i<array1.length);i++){
         for(int j = 0;(j<array2.length);j++){
           if (array1[i] == array2[j]){
           array2[j] = ' ';

           }
          }
         }
        }
       }           

共 (2) 个答案

  1. # 1 楼答案

    如果我没弄错你的问题,这是你解决问题的一种方法

    您可以使用布尔值作为标志:

    public boolean isSuperAnagram(String s, String st){
        s.toLowerCase();
        st.toLowerCase();
        char[] array1 = s.toCharArray();
        char[] array2 = st.toCharArray();
    
        boolean myFlag = true; // flag is initially true to enter the loop
    
        // added another condition to the loop - will exit if myFlag == false
        for(int i = 0; i < array1.length && myFlag; i++){
            myFlag = false;
            for(int j = 0; j < array2.length; j++){
               if (array1[i] == array2[j]){
                   array2[j] = ' ';
                   myFlag = true;   // found a match, set our flag == true
                   // we only want to replace ONE letter, not ALL (so break out of the loop)
                   break; 
               }
            }
        }
    
        // will only return true if every letter in array1 matched some letter in array2
        return myFlag;
    }
    
  2. # 2 楼答案

    您忘记返回布尔值。在if语句的末尾 返回真值