2014-08-29 2 views
0

Программы Я пишу, чтобы генерировать всю возможную подстроку из заданной строки (в том числе самого слова) и хранить их в String массивКак хранить подстроки, созданные из String в массив String?

Это мой код:

String word = "WOMAN"; 
String[] res = new String[20]; 
String sub; 
int i, j, k; 
int len = word.length(); 
for(i = 0; i < len; i++) 
{ 
    for(j = 0; j <= len-i; j++) 
    { 
     sub = word.substring(i, i+j); 
     for(k = 0; k < res.length; k++) 
      res[k] = sub; 
    } 
} 

Я получаю ошибка, которая говорит - error: incompatible types: String[] cannot be converted to String. Что я делаю не так?! Я хочу сохранить каждую подстроку в качестве элемента массива res.

+0

Что вы хотите достичь своей функцией? Возможно, есть еще более короткий путь. –

+0

Причина, по которой я хочу хранить их в массиве, - это доступ к любой подстроке. Скажем, я хочу найти слово «MAN» из «WOMAN» –

+0

@KrithikaR String.contains? String.indexOf() ... Пожалуйста, прочитайте о библиотеке String, затем задайте вопросы. Вот все ваши ответы: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html – zubergu

ответ

0
public static String[] getSubStrings(String string){ 
     List<String> result = new ArrayList<String>(); 
     int i, c, length; 
     length = string.length(); 
     for(c = 0 ; c < length ; c++) 
     { 
     for(i = 1 ; i <= length - c ; i++) 
     { 
      result.add(string.substring(c, c+i)); 
     } 
     } 
     return result.toArray(new String[result.size()]); 
} 
-1

Я упростил ваш код к этому. Это может помочь.

String str = "WOMAN"; 

List<String> tempArr = new ArrayList<String>(); 

for (int i = 1; i < str.length(); i++) { 
    for (int j = i; j <= str.length(); j++) { 
     tempArr.add(str.substring(i - 1, j)); 
    } 
} 

String[] res = tempArr.toArray(new String[tempArr.size()]); 
+0

для строки ab, она дает только a, ab, но она должна дать a, b, ab – coder101

0

я мало изменится, возможно, некоторую помощь

String word = "WOMAN"; 
    String[] res = new String[20]; 
    String sub; 
    int i, j, k=0; 
    int len = word.length(); 
    for(i = 0;i < len;i++) 
    { 
      for(j = 0;j <= len-i;j++,k++) 
      { 
       sub = word.substring(i, i+j); 
       //for(k = 0;k < res.length;k++) 
        res[k] = sub; 
      } 
    } 
+0

Спасибо! Это небольшое изменение полностью сработало! –

0

Попробуй так

String word = "WOMAN"; 
String sub = ""; 
int len = word.length(); 
List list = new ArrayList(); 
for(int i = 0; i < len; i++) 
{ 
    for(int j = 1; j <=len-i; j++) 
    { 
     sub = word.substring(i, i+j); 
     list.add(sub); 
    } 

} 
System.out.println(list); 
0

попробуйте использовать ArrayList вместо массива. Размер массива исправлен. Таким образом, сгенерированные подстроки могут иногда перетекать или некоторые пробелы остаются пустыми, если размер подстроки будет меньше, чем массив. Список массивов динамически растет с увеличением размера.

со списком массива один простое решение будет:

GenerateStrings общественного класса {

/** 
* Generate substrings of a given string and add them in an arraylist. 
*/ 
public static void main(String[] args) { 
    ArrayList<String> aList=new ArrayList<String>(); 
    Scanner sc = new Scanner(System.in); 
    System.out.println("enter the string to split"); 
    String string=sc.nextLine(); 
    for(int i=0;i<string.length();i++){ 
     for(int j=1;j<=string.length()-i;j++){ 
      String subString=string.substring(i, i+j); 
      aList.add(subString); 

     } 
    } 
    System.out.println(aList); 
} 

}

Я надеюсь, что это помогает.

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