首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字符串中查找子字符串的频率

从字符串中查找子字符串的频率
EN

Stack Overflow用户
提问于 2015-10-19 12:39:48
回答 2查看 812关注 0票数 0

我试图在字符串中查找子字符串的出现频率。例如:

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

其结果应该是:

第一次迭代中的

House=2 Dog =3 Bat=2

第二次迭代中的 House Dog

狗蝙蝠

蝙蝠狗

狗屋

家犬

狗蝙蝠

所以狗狗和狗蝙蝠的频率都是2,而其他的是1。

第三次迭代中的

家犬蝙蝠

狗蝙蝠狗

蝙蝠狗屋

狗屋狗

家犬蝙蝠

狗蝙蝠

蝙蝠

只有狗蝙蝠的频率是2,其他的只有1。

计数过程一直持续到特定的迭代次数?

必须在IntelliJ Idea Android中实现它,但是Java代码也会有帮助。

已经搜索过网络了。

是的,输入总是不同的,long.Input将是google搜索结果的源代码。比如狗和房子。

当前代码:

代码语言:javascript
复制
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();
     }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-19 17:22:40

这是我能够开发的解决方案。联接的方法写在我的问题中。

代码语言:javascript
复制
    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
EN

Stack Overflow用户

发布于 2015-10-19 12:50:11

您可以尝试这样搜索单词的重复。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33214643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档