2015-10-19 159 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