2

到目前为止,这是我的代码。我被卡住了,我不知道该怎么办。谢谢您的帮助!

public static boolean checkWord(String a, String b){

    int x = 0;
    while (x < a.length()){
      int y = 0;
      while (y < b.length()){
        if(a.charAt(x)==b.charAt(y)){
          String t = "next";
          System.out.println(t);
          y++;
        }else{

        }
      }
      x++;
    }
    return false;
  }
4

2 回答 2

1

我还没有编译这段代码,但它应该可以工作。

public static boolean checkWord(String a, String b)
{
    int j;
    for(int i = 0; i < a.length(); i++)
    {
        j = 0;
        while(j < b.length())
        {
            if(a.charAt(i) == b.charAt(j)) break;
            j++;
        }
        if(j == b.length()) return false;
    }
    return true;
}

据我了解,您想查看“a”中的字母是否以特定顺序包含在“b”中,即您不是在寻找“a”是否是“b”的子字符串。

外层循环将遍历字符串 a 中的每个字符,而内层循环将运行多次才能找到匹配项。如果没有匹配,内部循环将增加它的控制变量'j'到'b'的大小。这就是为什么你会在内部 while 循环之后进行检查 - 如果检查通过,这意味着在字符串 'b' 的任何地方都找不到来自字符串 'a' 的字母,因此程序可以返回 false;

如果外部 for 循环定期结束,则表示所有字母都匹配,函数将返回 true。

于 2013-03-31T20:44:32.417 回答
0
  public static boolean checkWord(String a, String b){
    int x = 0;
    while (x < a.length()){
      int y = 0;
      while (y < b.length()){
        System.out.println("x:" + x + " y:" + y + " a.charAt(x)==b.charAt(y):" + (a.charAt(x)==b.charAt(y)));
        if(a.charAt(x)==b.charAt(y)){
          break;
        }else{
          y++;
        }
        if (y == b.length()) {
          return false;
        }
      }
      x++;
    }
    return true;
  }
于 2013-03-31T20:44:38.953 回答