2013-03-12 69 views
-9

如何創建一個給定字符串的所有子串的ListArrayList? 例如,如果我的輸入是「測試」,那麼我需要一個數組= {「t」,「e」,「s」,「t」,「te」,「es」,「st」,「tes」 ,「est」,「test」}。創建一個字符串的所有子串的數組

+2

您是否嘗試編寫任何代碼? – Apurv 2013-03-12 06:56:23

+3

這不是SO的工作原理,直接詢問代碼。嘗試一下自己,然後問一個具體的問題。 – 2013-03-12 06:57:50

+0

請提供您的代碼。 – Lakshmi 2013-03-12 07:02:21

回答

1

這與給定數字「N」產生排列相似。所以先找到字符串的長度和迭代,並生成子

事情是這個 -

Algorithm- 
for i=0 to string.length 
    for j=1 to string.length-i 
     //Generate substrings here 

正如其他人所建議作出一些嘗試來解決這個問題,然後問你的疑問!

1

,如果你想使用ArrayList,因爲它是動態的,你可以試試這個代碼:

String input = "test"; 
    String temp; 
    List<String> list = new ArrayList<String>(); 
    for(int i=0;i<input.length();i++){ 
     for(int j=1;j<=(input.length()-i);j++){ 
      temp = input.substring(i,i+j); 
      list.add(temp); 

     } 
    } 
    for (String string : list) { 
     System.out.println(string); 
    } 

如果你仍然想使用字符串數組,你可以這樣做:

String input = "test"; 
     String temp; 
     String[] list = new String[10]; 
     int k=0; 
     for(int i=0;i<input.length();i++){ 
      for(int j=1;j<=(input.length()-i);j++){ 
       temp = input.substring(i,i+j); 
       list[k++]=temp; 

      } 
     } 
     for (String string : list) { 
      System.out.println(string); 
     } 

注意:因爲ArrayList是動態的,所以最好使用ArrayList而非數組。

+0

請嘗試這一個,讓我知道如果你仍然有任何問題。 – 2013-03-12 07:10:38

0

以下是針對您的問題的簡單解決方案。

import java.util.ArrayList; 

public class Substrings { 
    public static void main(String []args) { 
     ArrayList<String> substrings = Substrings.generateSubstrings("test"); 
     for(String s : substrings) 
      System.out.println(s); 

    } 

    public static ArrayList<String> generateSubstrings(String str) { 
     //The total number of substrings of given string 
     int substringsCount = str.length() * (str.length() + 1)/2; 

     ArrayList<String> substrings = new ArrayList<String>(substringsCount); 

     //generating all the substrings. 
     for(int i = 0;i < str.length();i++) 
      for(int j = i+1;j <= str.length();j++) 
       substrings.add(str.substring(i,j)); 

     return substrings; 
    } 
} 
相關問題