2015-10-19 64 views
0

我正在嘗試查找字符串中子字符串出現的頻率。 例如:從字符串中查找子字符串的頻率

字符串是:家犬蝙蝠狗家犬蝙蝠

結果應該是:

在第一次迭代:

樓= 2狗= 3蝙蝠= 2

在第二次迭代: 家犬

犬蝠

蝙蝠犬

狗屋

家犬

犬蝠

因此,無論衆議院狗與狗蝙蝠將有2頻率及其他1

在第三次迭代中:

家犬蝙蝠

犬蝠狗

蝙蝠狗屋

狗家犬

家犬蝙蝠

犬蝠

蝙蝠

只有房子狗蝙蝠的頻率爲2.其他將爲1.

並且計數過程一直持續到特定次數的迭代?

必須在IntelliJ Idea Android中實現它,但Java代碼也會有幫助。

已經在網上搜索過。

是的,輸入將永遠是不同的long.Input將谷歌搜索結果的源代碼。狗和房子只是例如。

當前代碼:

public static void main(String[] args) { 

Map<String, Integer> unique = new LinkedHashMap<String, Integer>(); 
    for (String string : "House House House Dog Dog Dog Dog".split(" ")) { 
     if(unique.get(string) == null) 
      unique.put(string, 1); 
     else 
      unique.put(string, unique.get(string) + 1); 
    } 
    String uniqueString = join(unique.keySet(), ", "); 
    List<Integer> value = new ArrayList<Integer>(unique.values()); 

    System.out.println("Output = " + uniqueString); 
    System.out.println("Values = " + value); 

} 

    public static String join(Collection<String> s, String delimiter) { 
     StringBuffer buffer = new StringBuffer(); 
     Iterator<String> iter = s.iterator(); 
     while (iter.hasNext()) { 
      buffer.append(iter.next()); 
       if (iter.hasNext()) { 
       buffer.append(delimiter); 
       } 
     } 
     return buffer.toString(); 
    } 
+0

將字符串拆分爲空格字符。爲每個單詞增加一個變量(該單詞的計數器)。 –

+0

我知道我必須在空間上分割它。這是第二次迭代,因此我遇到了問題。 – AAA

+0

編輯中添加的當前代碼 – AAA

回答

0

的repeation這裏是一個我能夠開發解決方案。加入方法寫在我的問題。

public static void getStringTripple(String a){  
      String s[]=a.split(" "); 
      List<String> asList = Arrays.asList(s); 
      Map<String, Integer> unique = new LinkedHashMap<String, Integer>(); 
      String string=""; 
     for(int i=0;i<asList.size();i++){ 
     for(int j=i;j<s.length;j++){ 
      string+= asList.get(j); 
     if(unique.get(string) == null) 
      unique.put(string, 1); 
     else 
      unique.put(string, unique.get(string) + 1); 
      } 
     string=""; 
    } 
    String uniqueString = join(unique.keySet(), ", "); 
    List<Integer> value = new ArrayList<Integer>(unique.values()); 


    System.out.println("Output = " + uniqueString); 
    System.out.println("Values = " + value); 

} 
0

你可以嘗試這樣的搜索詞

public static void getStringTripple(String a){  
     String s[]=a.split(" "); 
     List<String> asList = Arrays.asList(s); 
     Set<String> mySet = new HashSet<String>(asList); 
     for(String ss: mySet){ 
      if(Collections.frequency(asList,ss)>=3) 
       System.out.println(ss + " " +Collections.frequency(asList,ss)); 
     }  
    } 
+0

我認爲他找到由多個單詞組成的字符串的重複有更多的問題。 –

+0

你的代碼正在做我已經實現的功能。 – AAA