2013-03-29 155 views
-4

說我有一個字符串,它可能看起來像:查找單詞

「RAHDTWUOPO」

我知道我要找的字,例如:

「WORD」

這將是尋找最好的方法,如果我可以彌補「WORD」包含「RAHDTWUOPO」的字符串

編輯:

因爲這個問題是標識不清的認爲Id投入更多的細節。我想達到的目的是要找出我之前知道的一個詞是否可以由一串隨機字母組成。不知道如何去做這個循環,或者是否有其他方法。

我拿出東西很快在我的頭,但我知道這是很大的努力,但我把它放在這裏做什麼,我想實現這個問題更加清晰。

public class MyLetterObject { 
    private String letter; 
    private Boolean used; 

    public String getText() { 
     return letter; 
    } 

    public void setLetter(String letter) { 
     this.letter = letter; 
    } 

    public Boolean getUsed() { 
     return used; 
    } 

    public void setUsed(Boolean used) { 
     this.used = used; 
    } 
} 

boolean ContainsWord(String Word, String RandomLetterString) { 
    List<MyLetterObject> MyLetterList = new ArrayList<MyLetterObject>(); 
    for (char ch : RandomLetterString.toCharArray()) { 
     MyLetterObject mlo = new MyLetterObject(); 
     mlo.setLetter(String.valueOf(ch)); 
     mlo.setUsed(false); 
     MyLetterList.add(mlo); 
    } 

    String sMatch = ""; 

    for (char Wordch : Word.toCharArray()) { 

     for (MyLetterObject o : MyLetterList) { 

      if (o.getUsed() == false 
        && String.valueOf(Wordch).equals(o.getText())) { 

       o.setUsed(true); 
       sMatch = sMatch + String.valueOf(Wordch); 
       break; 
      } 

     } 
    } 

    if (sMatch.equals(Word)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

正如你可以看到很多努力。葉夫根尼·Dorofeev答案是更加的只是發現如果一個字可以從隨機順序的字母組成的字符串進行的宗旨更好。

+6

什麼樣的方法你目前考慮的? –

+1

它會採取排列組合,並忘記它。對於一個沒有采取任何行動來解決問題的人來說,這太複雜了。 – David

+0

你知道[String.indexOf(字符串str)(http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#indexOf(java.lang.String中) ) – Parth

回答

5

嘗試

boolean containsWord(String s, String w) { 
    List<Character> list = new LinkedList<Character>(); 
    for (char c : s.toCharArray()) { 
     list.add(c); 
    } 
    for (Character c : w.toCharArray()) { 
     if (!list.remove(c)) { 
      return false; 
     } 
    } 
    return true; 
} 
0

你在第一個字符串搜索每一個字母,一個接一個。

String randomString = "RAHDTWUOPO"; 
String word = "WORD"; 

for(int i=0;i<word.length; i++){ 
     if(randomString.contains(word.charAt(i))){ 

     // Yey, another letter found 
     } 
} 

然後你只需要測試,如果每一個i的信居然發現,如果沒有,這個詞是不是在randomString包括在內。

0

你需要發現,從你的話「WORD」的所有字母的輸入字符串在列表中存在一次。 簡單的循環會爲你做,但性能不會是最好的。 您可以使用番石榴庫多集: http://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained

多集wordsMultiset = HashMultiset.create(); wordsMultiset.addAll(字); //現在我們可以使用wordsMultiset.count(字符串),以找到一個詞

的計數

這個例子是有關的話,它adopte你輸入字符串的字符。