Finding repeated words on a string and counting the repetitions

后端 未结 29 916
梦谈多话
梦谈多话 2021-02-05 17:49

I need to find repeated words on a string, and then count how many times they were repeated. So basically, if the input string is this:

String s = \"House, House         


        
相关标签:
29条回答
  • 2021-02-05 18:04

    Try this,

    public class DuplicateWordSearcher {
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
    
        String text = "a r b k c d se f g a d f s s f d s ft gh f ws w f v x s g h d h j j k f sd j e wed a d f";
    
        List<String> list = Arrays.asList(text.split(" "));
    
        Set<String> uniqueWords = new HashSet<String>(list);
        for (String word : uniqueWords) {
            System.out.println(word + ": " + Collections.frequency(list, word));
        }
    }
    

    }

    0 讨论(0)
  • 2021-02-05 18:05

    as introduction of stream has changed the way we code; i would like to add some of the ways of doing this using it

        String[] strArray = str.split(" ");
        
        //1. All string value with their occurrences
        Map<String, Long> counterMap = 
                Arrays.stream(strArray).collect(Collectors.groupingBy(e->e, Collectors.counting()));
    
        //2. only duplicating Strings
        Map<String, Long> temp = counterMap.entrySet().stream().filter(map->map.getValue() > 1).collect(Collectors.toMap(map -> map.getKey(), map -> map.getValue()));
        System.out.println("test : "+temp);
        
        //3. List of Duplicating Strings
        List<String> masterStrings = Arrays.asList(strArray);
        Set<String> duplicatingStrings = 
                masterStrings.stream().filter(i -> Collections.frequency(masterStrings, i) > 1).collect(Collectors.toSet());
    
    0 讨论(0)
  • 2021-02-05 18:06

    It may help you somehow.

    String st="I am am not the one who is thinking I one thing at time";
    String []ar = st.split("\\s");
    Map<String, Integer> mp= new HashMap<String, Integer>();
    int count=0;
    
    for(int i=0;i<ar.length;i++){
        count=0;
    
        for(int j=0;j<ar.length;j++){
            if(ar[i].equals(ar[j])){
            count++;                
            }
        }
    
        mp.put(ar[i], count);
    }
    
    System.out.println(mp);
    
    0 讨论(0)
  • 2021-02-05 18:06
    package day2;
    
    import java.util.ArrayList;
    import java.util.HashMap;`enter code here`
    import java.util.List;
    
    public class DuplicateWords {
    
        public static void main(String[] args) {
            String S1 = "House, House, House, Dog, Dog, Dog, Dog";
            String S2 = S1.toLowerCase();
            String[] S3 = S2.split("\\s");
    
            List<String> a1 = new ArrayList<String>();
            HashMap<String, Integer> hm = new HashMap<>();
    
            for (int i = 0; i < S3.length - 1; i++) {
    
                if(!a1.contains(S3[i]))
                {
                    a1.add(S3[i]);
                }
                else
                {
                    continue;
                }
    
                int Count = 0;
    
                for (int j = 0; j < S3.length - 1; j++)
                {
                    if(S3[j].equals(S3[i]))
                    {
                        Count++;
                    }
                }
    
                hm.put(S3[i], Count);
            }
    
            System.out.println("Duplicate Words and their number of occurrences in String S1 : " + hm);
        }
    }
    
    0 讨论(0)
  • 2021-02-05 18:06

    please try these it may be help for you.

    public static void main(String[] args) {
            String str1="House, House, House, Dog, Dog, Dog, Dog";
            String str2=str1.replace(",", "");
            Map<String,Integer> map=findFrquenciesInString(str2);
            Set<String> keys=map.keySet();
            Collection<Integer> vals=map.values();
            System.out.println(keys);
            System.out.println(vals);
        }
    
    private static Map<String,Integer> findFrquenciesInString(String str1) {
            String[] strArr=str1.split(" ");
            Map<String,Integer> map=new HashMap<>();
            for(int i=0;i<strArr.length;i++) {
                int count=1;
                for(int j=i+1;j<strArr.length;j++) {
                    if(strArr[i].equals(strArr[j]) && strArr[i]!="-1") {
                        strArr[j]="-1";
                        count++;
                    }
                }
                if(count>1 && strArr[i]!="-1") {
                    map.put(strArr[i], count);
                    strArr[i]="-1";
                }
            }
            return map;
        }
    
    0 讨论(0)
  • 2021-02-05 18:09
    public class StringsCount{
    
        public static void main(String args[]) {
    
            String value = "This is testing Program testing Program";
    
            String item[] = value.split(" ");
    
            HashMap<String, Integer> map = new HashMap<>();
    
            for (String t : item) {
                if (map.containsKey(t)) {
                    map.put(t, map.get(t) + 1);
    
                } else {
                    map.put(t, 1);
                }
            }
            Set<String> keys = map.keySet();
            for (String key : keys) {
                System.out.println(key);
                System.out.println(map.get(key));
            }
    
        }
    }
    
    0 讨论(0)
提交回复
热议问题