Finding repeated words on a string and counting the repetitions

后端 未结 29 920
梦谈多话
梦谈多话 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:23
    public static void main(String[] args) {
        String s="sdf sdfsdfsd sdfsdfsd sdfsdfsd sdf sdf sdf ";
        String st[]=s.split(" ");
        System.out.println(st.length);
        Map<String, Integer> mp= new TreeMap<String, Integer>();
        for(int i=0;i<st.length;i++){
    
            Integer count=mp.get(st[i]);
            if(count == null){
                count=0;
            }           
            mp.put(st[i],++count);
        }
       System.out.println(mp.size());
       System.out.println(mp.get("sdfsdfsd"));
    
    
    }
    
    0 讨论(0)
  • 2021-02-05 18:23
    //program to find number of repeating characters in a string
    //Developed by Rahul Lakhmara
    
    import java.util.*;
    
    public class CountWordsInString {
        public static void main(String[] args) {
            String original = "I am rahul am i sunil so i can say am i";
            // making String type of array
            String[] originalSplit = original.split(" ");
            // if word has only one occurrence
            int count = 1;
            // LinkedHashMap will store the word as key and number of occurrence as
            // value
            Map<String, Integer> wordMap = new LinkedHashMap<String, Integer>();
    
            for (int i = 0; i < originalSplit.length - 1; i++) {
                for (int j = i + 1; j < originalSplit.length; j++) {
                    if (originalSplit[i].equals(originalSplit[j])) {
                        // Increment in count, it will count how many time word
                        // occurred
                        count++;
                    }
                }
                // if word is already present so we will not add in Map
                if (wordMap.containsKey(originalSplit[i])) {
                    count = 1;
                } else {
                    wordMap.put(originalSplit[i], count);
                    count = 1;
                }
            }
    
            Set word = wordMap.entrySet();
            Iterator itr = word.iterator();
            while (itr.hasNext()) {
                Map.Entry map = (Map.Entry) itr.next();
                // Printing
                System.out.println(map.getKey() + " " + map.getValue());
            }
        }
    }
    
    0 讨论(0)
  • 2021-02-05 18:24

    Please use the below code. It is the most simplest as per my analysis. Hope you will like it:

    import java.util.Arrays;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Scanner;
    import java.util.Set;
    
    public class MostRepeatingWord {
    
        String mostRepeatedWord(String s){
            String[] splitted = s.split(" ");
            List<String> listString = Arrays.asList(splitted);
            Set<String> setString = new HashSet<String>(listString);
            int count = 0;
            int maxCount = 1;
            String maxRepeated = null;
            for(String inp: setString){
                count = Collections.frequency(listString, inp);
                if(count > maxCount){
                    maxCount = count;
                    maxRepeated = inp;
                }
            }
            return maxRepeated;
        }
        public static void main(String[] args) 
        {       
            System.out.println("Enter The Sentence: ");
            Scanner s = new Scanner(System.in);
            String input = s.nextLine();
            MostRepeatingWord mrw = new MostRepeatingWord();
            System.out.println("Most repeated word is: " + mrw.mostRepeatedWord(input));
    
        }
    }
    
    0 讨论(0)
  • 2021-02-05 18:24
    /*count no of Word in String using TreeMap we can use HashMap also but word will not display in sorted order */
    
    import java.util.*;
    
    public class Genric3
    {
        public static void main(String[] args) 
        {
            Map<String, Integer> unique = new TreeMap<String, Integer>();
            String string1="Ram:Ram: Dog: Dog: Dog: Dog:leela:leela:house:house:shayam";
            String string2[]=string1.split(":");
    
            for (int i=0; i<string2.length; i++)
            {
                String string=string2[i];
                unique.put(string,(unique.get(string) == null?1:(unique.get(string)+1)));
            }
    
            System.out.println(unique);
        }
    }      
    
    0 讨论(0)
  • 2021-02-05 18:24
        public static void main(String[] args){
        String string = "elamparuthi, elam, elamparuthi";
        String[] s = string.replace(" ", "").split(",");
        String[] op;
        String ops = "";
    
        for(int i=0; i<=s.length-1; i++){
            if(!ops.contains(s[i]+"")){
                if(ops != "")ops+=", "; 
                ops+=s[i];
            }
    
        }
        System.out.println(ops);
    }
    
    0 讨论(0)
  • 2021-02-05 18:24

    For Strings with no space, we can use the below mentioned code

    private static void findRecurrence(String input) {
        final Map<String, Integer> map = new LinkedHashMap<>();
        for(int i=0; i<input.length(); ) {
            int pointer = i;
            int startPointer = i;
            boolean pointerHasIncreased = false;
            for(int j=0; j<startPointer; j++){
                if(pointer<input.length() && input.charAt(j)==input.charAt(pointer) && input.charAt(j)!=32){
                    pointer++;
                    pointerHasIncreased = true;
                }else{
                    if(pointerHasIncreased){
                        break;
                    }
                }
            }
            if(pointer - startPointer >= 2) {
                String word = input.substring(startPointer, pointer);
                if(map.containsKey(word)){
                    map.put(word, map.get(word)+1);
                }else{
                    map.put(word, 1);
                }
                i=pointer;
            }else{
                i++;
            }
        }
        for(Map.Entry<String, Integer> entry : map.entrySet()){
            System.out.println(entry.getKey() + " = " + (entry.getValue()+1));
        }
    }
    

    Passing some input as "hahaha" or "ba na na" or "xxxyyyzzzxxxzzz" give the desired output.

    0 讨论(0)
提交回复
热议问题