我有一個字符串,改變字母位置字符串中我會得到新的字符串後,在這裏,我必須使用字典和檢查新組成的字符串是否有意義還是不是?檢查如果新提交的字符串是一個有效的字
我怎麼能做到這一點在Java中?
請幫助我!
舉例: 字符串:CAT 從這個我可以交,ACT,CAT等。
或
爲公司的Java程序「從一個特定的詞找到意味深長的話,一旦我們把它打亂「
我有一個字符串,改變字母位置字符串中我會得到新的字符串後,在這裏,我必須使用字典和檢查新組成的字符串是否有意義還是不是?檢查如果新提交的字符串是一個有效的字
我怎麼能做到這一點在Java中?
請幫助我!
舉例: 字符串:CAT 從這個我可以交,ACT,CAT等。
爲公司的Java程序「從一個特定的詞找到意味深長的話,一旦我們把它打亂「
創建一組字母(這是字符串)的所有子集。這是可以做到既遞歸或迭代地(提示:使用一個1個比特如果在元件中存在的文字和否則爲0;你知道,一組具有2^n個元素,所以你只是必須產生從[0的所有位, 1 < < set.size()]並使用它來構造集合)。
解析這個集合的每個結果元素,並檢查它是否在字典中(例如,你可以使用HashMaps)使用元素字符串作爲關鍵字。如果你能證明一些代碼,我就能引導你從那裏....
編輯:
我誤解你想要的字符串的排列不套將以下問題。製作所有子集將要求您消除長度小於給定字符串的元素,這是低效的。那麼你將不得不採取不同的方式。
假設你有 「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
現在嘗試編碼這個遞歸...
假設你問如何檢查每個排列,看它是否是一個有效的詞,不如何實際計算排列,您可以執行對一個Set
,其中包括所有的有效的話,像查找:
private static final Set<String> myDictionary = new HashSet<String>();
static {
//put some values in the dictionary of valid words (or even better: load it from a file)
myDictionary.add("CAT");
myDictionary.add("DOG");
//...
}
public static void main(String[] args) {
List<String> permutations = permute("CAT");
for (String candidate : permutations) {
if (myDictionary.contains(candidate)) {
System.out.println("Found a valid word: " + candidate);
}
}
}
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;
}
你嘗試過什麼到目前爲止的代碼來實現你的任務是什麼? – canadiancreed
你確定你必須使用java.util.Dictionary。它現在被認爲是過時的,去污染的,不使用的。 –
我認爲他的意思是「字典」而不是「字典」類。 –