我有一个字符串,在更改字符串中字母的位置后,我将获得新的字符串,这里我必须使用字典并检查新形成的字符串是否是一个有意义的单词?
我怎么能在java中做到这一点?
请帮助我!!
示例: 字符串:CAT 从这里我可以获得TAC,ACT,CAT等。
用于s的Java程序“一旦我们混淆它就从特定单词中找到有意义的单词”
答案 0 :(得分:1)
创建一组字母的所有子集(在字符串中)。这可以递归地或迭代地完成(提示:如果字母存在于元素中则使用1位,否则使用0;您知道一个集合具有2 ^ n个元素,因此您只需要从[0开始生成所有位] 1<< set.size()]并使用它来构造集合)。
解析此集合的每个结果元素,并使用元素字符串作为键检查它是否在字典中(例如,您可以使用HashMaps)。如果你能展示一些代码,我将能够从那里引导你......
修改强>
我误读了这个问题 - 你想要字符串NOT集的排列。制作所有子集将要求您消除长度小于给定字符串的元素,这是低效的。那么你将不得不采取不同的方式。
假设你有“abc”。你会怎么做?
elem 1 => “a”, remainder => “bc”
1. permute(bc) = {“bc”, “cd”}
2. Add “a” into each location of “bc” (“abc”, “bac”, “bca”) and
“cb” (“acb”, “cab”, “cba”)
3. Return this list
现在尝试递归编码......
答案 1 :(得分:1)
假设您正在询问如何检查每个排列以查看它是否是有效单词,并且不如何实际计算排列,则可以对{{1}执行查找}包括所有有效的单词,例如:
Set
答案 2 :(得分:0)
public bool checkisSecondStringValidFromFirst(String str, String checkstr){
int n=str.length();
if(n!=checkstr.length())return false;
char[] cstr=str.toCharArray();
char[] ccstr=checkstr.toCharArray();
Arrays.sort(cstr);
Arrays.sort(ccstr);
for(int i=0;i<n;++i){
if(cstr[i]!=ccstr[i])
return false;
}
return true;
}