检查单词所包含的字母是否存在于另一个字符串中

-1 java string for-loop substring contains

这是我第一次在这里发帖,所以请告诉我是否需要更正这篇文章中的任何内容.我想请求一些给我带来麻烦的帮助.我需要检查一个字符串的字符是否出现在另一个字符串中,但它们只需要检测一次.例如,对于字符串"BFEABLDEG","LABEL"不应返回true,因为它当前正在执行.

为了澄清,目的不是让程序计数字符.它是让程序检查创建一个单词所需的字母是否包含在randomString中,两个字符串中每个字母的数字完全相同.该计划部分基于游戏节目倒计时.

这就是我到目前为止所拥有的.任何帮助将不胜感激.

编辑:感谢所有帮助过我的人.我已经接受了Aru的贡献作为我正在寻找的解决方案,因为它避免了我最准确的问题,因为需要检查的字符串的大小.

public static boolean Checkword(){
String randomString = "BFEABLDEG";
 String word = "LABEL";
 {
 for(int i=0;i<word.length(); i++){
      if(randomString.contains(word.substring((i)))){
          return true;

      }
 }
return false;
 }
Run Code Online (Sandbox Code Playgroud)

}

好的,我给出的解决方案适用于基本示例.但是,最终目标是让用户从一串九个随机字符中创建任意长度的单词.目前,他们可以通过输入比字符串更多的任何字符来实现这一点.考虑到添加了该功能的新代码,我想知道是否有人可以帮助我.

    public static boolean Checkword(String x){
    String randomString = convertToString();
     String word = x;
     {
     for(int i=0;i<word.length(); i++){
          if(randomString.indexOf(word.charAt(i)) == -1){
              return false;

          }
     }
    return true;
     }
}
Run Code Online (Sandbox Code Playgroud)

Vel*_*ria 5

我不确定我是否完全理解你想要实现的目标,但你方法的整个逻辑是有缺陷的.

显然,一个问题是,true如果只是最后一个字符匹配,你的函数将返回,因为substring(word.length() - 1)将检查最后一个字符是否包含在另一个字符串中.在每个其他循环中,您将检查是否包含整个序列,从整个字符串开始并减少每个循环的字符数.

即使您添加了word不在其中的字符,randomString只要它们不在字符串的末尾,该函数将返回true.

这样的事情应该是你原本想要的:

public static boolean checkWord() {
    String randomString = "BFEABLDEG";
    String word = "LABEL";
    for (int i = 0; i < word.length(); i++) {
        if (randomString.indexOf(word.charAt(i)) == -1) {
            return false;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

检查重复字符的简单方法是删除字符串中出现的一个字符.肯定有更高效的解决方案,请务必检查评论中链接的线程.

public static void main(String[] args) throws Exception {
    System.out.println(test("BFEABLDEG", "LABEL"));
}

public static boolean test(String searchIn, String searchFor) {
    for (char c : searchFor.toCharArray()) {
        if (searchIn.indexOf(c) == -1) {
            return false;
        }
        searchIn = searchIn.replaceFirst(Character.toString(c), "");
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)