10

Write a function in Java which takes an Array of strings and from the array of strings returns only those strings which have a consecutive repetition of a particular letter for eg: if I/P is

{"Dauresselam", "slab", "fuss", "boolean", "clap"}

then O/P should be

{"Dauresselam", "fuss", "boolean"}

I could solve it using

import java.util.Scanner;
public class doubleChars {
    public static String[] getDoubles(String[]In)
    {

        int inLen=In.length;
        String zoom[]=new String[inLen];
        int count=0;
        if(inLen==0)
        {
            return zoom;
        }
        for(int i=0;i<=inLen-1;i++)
        {
            String A=In[i];
            //System.out.println(A);
            int striLen=A.length();
            for(int j=0;j<striLen-1;j++)
            {

                if(A.substring(j, j+1).equals(A.substring(j+1, j+2)))
                {
                    zoom[count]=A;
                    count++;
                    break;
                }
            }

        }
          return zoom;
        }
     public static void main(String[] args)
     {
         char more='y';
         int ab=0;
        String[] res={};
        String[] fillMe={"durres", "murres", "", "abcdeee", "boolean", "nger", "lagger"};
        Scanner strobe=new Scanner(System.in);
        System.out.println("Please enter the arraye of the string");
        /*while(strobe.hasNext())
        {
            fillMe[ab]=strobe.next();

            ab++;
        }
        */
        res=doubleChars.getDoubles(fillMe);
        for(int k=0;k<res.length;k++)
        {
            if(res[k]==null)
            {
                break;
            }
        System.out.println(res[k]);
        }
    }
}

IS there a way to use regex to make it shorter?

1 Answer 1

17

You could use a backreference:

([a-z])\1

Regular expression visualization

Visualization by Debuggex


Java example:

String[] strings = { "Dauresselam", "slab", "fuss", "boolean", "clap" };

String regex = "([a-z])\\1";
Pattern pattern = Pattern.compile(regex);

for (String string : strings) {
    Matcher matcher = pattern.matcher(string);
    if (matcher.find()) {
        System.out.println(string);
    }
}

Prints:

Dauresselam
fuss
boolean
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.