从给定字符串中查找所有字典单词的java程序

从给定字符串中查找所有字典单词的java程序,java,string,word,Java,String,Word,我需要一个java程序,它应该从给定的字符串组合中给出所有字典单词。 示例:如果给定的字符串是“IOSMNEAB”,则它是长度为8的字符串。 我需要诸如IS、NAME、SOME、SON、MEAN等词 我的解决方案是:对字符串进行所有排列,并在已经创建的字典数据库中进行搜索。 但它只给出8位长度的单词。我需要长度>=2且的单词,您可以使用每个排列并检查单词的子字符串。您不必总是使用完整的字符串长度。您可以使用每个排列并检查子字符串中的单词。您不必总是使用完整的字符串长度。我建议您使用给定字符串的所

我需要一个java程序,它应该从给定的字符串组合中给出所有字典单词。 示例:如果给定的字符串是“IOSMNEAB”,则它是长度为8的字符串。 我需要诸如IS、NAME、SOME、SON、MEAN等词

我的解决方案是:对字符串进行所有排列,并在已经创建的字典数据库中进行搜索。
但它只给出8位长度的单词。我需要长度>=2且的单词,您可以使用每个排列并检查单词的子字符串。您不必总是使用完整的字符串长度。

您可以使用每个排列并检查子字符串中的单词。您不必总是使用完整的字符串长度。

我建议您使用给定字符串的所有可能子集来生成所有可能的单词

请参阅下面的帖子:
我建议您使用给定字符串的所有可能子集来生成所有可能的单词

请参阅下面的帖子:

在现有代码中,假设它有效地查找长度为8个字符的单词,您只需将测试
置换的.equals(dictionaryWord)
替换为
置换的.contains(dictionaryWord)
:如果置换的单词的一部分与字典单词相等,则返回true。

在现有代码中,假设它有效地找到了长度为8个字符的单词,您只需将测试
置换的.equals(dictionaryWord)
替换为
置换的.contains(dictionaryWord)
:如果置换单词的一部分等于字典单词,则返回true

   import java.sql.DriverManager;
   import java.sql.SQLException;
   import java.util.Random;
   import java.sql.*;
   public final class Combination1 {    

  static String url = "jdbc:mysql://localhost:3306/file";
  static int count;
  static String Vowel = "AEIOU";
  static String Consonant = "BCDFGHJKLMNPQRSTVWXYZ";
  static StringBuffer word;
  static Connection con;
  static ResultSet rs;
  static PreparedStatement preparedStatement;
  static Random randomGenerator = new Random();

   public static final void main(String... aArgs){
  String str="";
  for(int i=0;i<5;i++){
      char a = getRandomConsonant(); 
      str = str+a;}
  for(int i=0;i<3;i++){
      char a = getRandomVowel(); 
      str = str+a;}
    StringBuffer strBuf = new StringBuffer(str);
    count = 0;
    doPerm(strBuf,str.length());

    if(count>=1){
        try
          {
             Class.forName("com.mysql.jdbc.Driver");
             try
             {              
                con = DriverManager.getConnection(url,"root","1234");
                preparedStatement = con.prepareStatement("insert into FILE.WORDS values (?,?)");
                preparedStatement.setString(1, str);
                preparedStatement.setInt(2, count);
                preparedStatement.executeUpdate();
             }

             catch (SQLException ex)
             {
                ex.printStackTrace();
             }
          }
        catch(ClassNotFoundException e)
          {
             System.out.println(e);
          }
    }

      }

      private static char getRandomVowel(){
  int randomInt = randomGenerator.nextInt(4);
  return Vowel.charAt(randomInt);
  }
      private static char getRandomConsonant(){
  int randomInt = randomGenerator.nextInt(20);
  return Consonant.charAt(randomInt);
  }
      private  static void swap(StringBuffer str, int pos1, int pos2){
    char t1 = str.charAt(pos1);
    str.setCharAt(pos1, str.charAt(pos2));
    str.setCharAt(pos2, t1);
} 
    private static void doPerm(StringBuffer str, int index){

    if(index == 0)
    {
     System.out.println(str);
     try
      {  
         String word = str.toString();
         Class.forName("com.mysql.jdbc.Driver");
         try
         {              
            con = DriverManager.getConnection(url,"root","1234");
            preparedStatement = con.prepareStatement("SELECT * FROM DICT WHERE word=?");
            preparedStatement.setString(1, word);
            rs = preparedStatement.executeQuery(); 
            rs = preparedStatement.getResultSet();
            if(rs.next()){
                count++;
            }
         }

         catch (SQLException ex)
         {
            ex.printStackTrace();
         }
      }
    catch(ClassNotFoundException e)
      {
         System.out.println(e);
      }
    }


    else {
        doPerm(str, index-1);
        int currPos = str.length()-index;
        for (int i = currPos+1; i < str.length(); i++) {
            swap(str,currPos, i);
            doPerm(str, index-1);
            swap(str,i, currPos);
        }
    }
}
   }