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