Java Regex 2 - Duplicate Words

Sort by

recency

|

381 Discussions

|

  • + 0 comments

    Hiring a local Oklahoma City mold removal company means you're working with professionals who understand the specific challenges of the region. They are familiar with common causes of mold in the area—such as heavy spring rains, tornado-related water intrusion Check this out, and high humidity in the summer—and can tailor their services accordingly. Local companies also tend to offer faster response times, which is crucial when dealing with mold issues that can worsen rapidly.

  • + 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+)(\\b\\W+\\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 = input.replaceAll(m.group(0), m.group(1));
            }
    
            // Prints the modified sentence.
            System.out.println(input);
        }
    
        in.close();
    }
    

    }

  • + 0 comments

    This is strange a little. My code works fine for java 7:

    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 = "(?i)\\b([A-Za-z]+)\\b(?:\\s+\\1\\b)+";
            Pattern p = Pattern.compile(regex);
    
            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 = input.replaceAll(regex, "$1");
                }
                
                // Prints the modified sentence.
                System.out.println(input);
            }
            
            in.close();
        }
    }
    

    But it doesn't work in java 15:

    import java.util.Scanner;
    
    public class Solution {
    
        public static void main(String[] args) {
    
            Scanner in = new Scanner(System.in);
            int cnt = Integer.parseInt(in.nextLine());
    
            String regex = "(?i)\\b([A-Za-z]+)\\b(?:\\s+\\1\\b)+";
    
            for (int i = 0; i < cnt; i++)
                System.out.println(in.nextLine().replaceAll(regex,"$1"));
            in.close();
            
        }
    }
    
  • + 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.