Java Regex 2 - Duplicate Words

Sort by

recency

|

378 Discussions

|

  • + 0 comments

    i think the test fails because of whitespace changes, so once you get a solution, copy it to a text editor, then paste in only the changes to the comments to make sure you haven't changed anything else, that got the tests to pass for me, even though the output already matched

  • + 0 comments

    i guess the test is wrong. the expected output is exact as my generated input, anyway test dont pass.

  • + 0 comments

    public class DuplicateWords {

    public static void main(String[] args) {
    
        String regex = "(?i)\\b(\\w+)\\b(\\s+\\1\\b)+";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    
        Scanner in = new Scanner(System.in);
        int numSentences = Integer.parseInt(in.nextLine());
    
        while (numSentences-- > 0) {
            String input = in.nextLine();            
            Matcher m = p.matcher(input);
            while (m.find()) {
                input = input.replaceAll(regex, "$1");
            }
            System.out.println(input);
        }
        in.close();
    }
    

    }

  • + 0 comments

    Do not change code other than three lines

    import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;

    public class DuplicateWords {

    public static void main(String[] args) {
    
        String regex = "\\b(\\w+)\\b(?:\\s+\\b\\1\\b)+";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    
        Scanner in = new Scanner(System.in);
        int numSentences = Integer.parseInt(in.nextLine());
    
        while (numSentences-- > 0) {
            String input = in.nextLine();
    
            Matcher m = p.matcher(input);
    
            // Check for subsequences of input that match the compiled pattern
            while (m.find()) {
                input = m.replaceAll("$1");
            }
    
            // Prints the modified sentence.
            System.out.println(input);
        }
    
        in.close();
    }
    

    }

  • + 0 comments

    import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;

    public class DuplicateWords {

    public static void main(String[] args) {
    
        String regex = "\\b(\\w+)(\\s+\\1\\b)+";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    
        Scanner in = new Scanner(System.in);
        int numSentences = Integer.parseInt(in.nextLine());
    
        while (numSentences-- > 0) {
            String input = in.nextLine();
    
            Matcher m = p.matcher(input);
    
            // Check for subsequences of input that match the compiled pattern
            while (m.find()) {
                input = m.replaceAll("$1");
            }
    
            // Prints the modified sentence.
            System.out.println(input);
        }
    
        in.close();
    }
    

    }