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

这是我第一次在这里发帖,所以请告诉我是否需要更正这篇文章中的任何内容。 我想请求一些给我带来麻烦的帮助。 我需要检查一个字符串的字符是否出现在另一个字符串中,但它们只需要检测一次。 例如,对于字符串“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; } 

}

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

  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; } } 

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

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

即使您将字符添加到不在randomString中的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; } 

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

 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; } 

它返回true,因为你测试了randomString的一个char

 public static boolean Checkword( String pattern, String randomString ){ return ( randomString .contains( pattern ) ) ? true : false; } String pattern = "LABEL"; String randomString = "BFEABLDEG"; Checkword( pattern, randomString ); //return false randomString = "AZDAZLABELIIDZA"; Checkword( pattern, randomString ); //return true 

如果您的word变量中的任何字符包含在randomString变量中,则您的程序将返回true。 从您的评论来看,听起来您想要检查word字符串中的每个字符是否都包含在randomString变量中。 这是一种略有不同的方法。

 public static boolean Checkword(){ String randomString = "BFEABLDEG"; String word = "LABEL"; for(int i=0;i 

这是非常低效的,因为它每次都必须创建一个新的字符串,如果你想让它更好一点,使用字符串生成器来改变字符串以删除找到的字符。