2013-11-18 4 views
10

Напишите функцию в Java, которая принимает массив строк и из массива строк возвращает только те строки, которые имеют последовательное повторение конкретной буквы, например: if I/P isПоиск строк с последовательными символами в Java

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

затем O/P должно быть

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

я мог бы решить эту проблему с помощью

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 Есть ли способ использовать регулярное выражение, чтобы сделать его короче?

ответ

16

Вы можете использовать backreference:

([a-z])\1 

Regular expression visualization

Визуализация по Debuggex


Java пример:

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); 
    } 
} 

Pr ints:

Dauresselam 
fuss 
boolean 
+0

Очень приличный и чистый код ... спасибо! –

+3

+1: Спасибо, что узнали что-то. –

Смежные вопросы