2016-06-12 92 views
-3

我想動態編寫任何字符串。在java中創建可能的給定字符串集合

例如,如果我拿着三根弦"a" "b" "c"

我想獲得的結果是:

String []array= {"a", "b", "c", "a b", "b c", "a b c"}; 

(缺乏「交流」的目的)

對於四弦"a" "b" "c" "d"我想得到結果

"a" "b" "c" "d" "a b" "b c" "c d" "a b c" "b c d" "a b c d"

+0

發生了什麼事與「「一C」'? – Pshemo

+0

不,先生,我不需要「一個C」。只是我想輸出像「a」「b」「c」「a b」「b c」「abc」。 –

+0

先生,如果我拿四串,那麼輸出應該是... abcd =「a」「b」「c」「d」「ab」「bc」「cd」「abc」「bcd」「abcd」 –

回答

0

所以你想要一組所有連續的串聯字符串。

假設你的輸入是一個字符串數組s = {s0,s1,s2,...,sn} 現在你的結果數組字符串r 將包含s的所有元素。

r = s.copy() 

現在添加的所有連續級聯,2串

for i = 0; i < n-1; i++; 
    r.add(s[i] + s[i+1]) 

繼續進行3串的所有連續級聯最多n個字符串

+0

如果我們給abcd =」a「」b「」c「」ab「」bc「」cd「 「abc」「bcd」「abcd」 –

+0

這是一個可以生成輸出的實現的僞描述。你會爲1-n(生成序列的長度)和內循環分叉0-(ni)形成一個for循環,這個循環有點讓你的值偏移 – xuma202

0

因爲這看起來像功課,我會盡量解釋解決方案但你是需要創建代碼的人。


如果我們有相同的元件

a, b, c, d 

令牌使用1個元素將是

a b c d 
^^^^

令牌使用2個元件將使用3個元素

a b c d 
^^^ 
    ^^^ 
    ^^^ 

令牌將是

a b c d 
^^^^^ 
    ^^^^^ 

,並使用所有4個元件的令牌將是

a b c d 
^^^^^^^ 

所以在尺寸n我們是從A,B的迭代每個令牌的情況下,以及添加到其它的下一個n-1元件。

所以方法,這將產生長度n的所有令牌應該像這樣工作:

  • 從中我們可以創建令牌滿所有元素(如果令牌大小爲2,我們不能用過去的元素,如果它的大小是3我們不能使用最後2個元素,...)
    • 下一個獲得n-1元素和單個令牌一些收集將它們組合起來(收集令牌,以便以後可以返回它)

,假設這樣的方法一樣List<String> generateTokens(String[] elements, int tokenSize)

聲明

的情況下

String[] elements = { "a", "b", "c", "d" }; 

我們需要INVO磕它4次獲得

generateTokens(elements, 1) // ["a", "b", "c", "d"] 
generateTokens(elements, 2) // ["a b", "b c", "c d"] 
generateTokens(elements, 3) // ["a b c", "b c d"] 
generateTokens(elements, 4) // ["a b c d"] 

所以你看,你需要調用該方法x次(其中x是元素的量),並收集在一個地方的所有結果。你可以通過簡單的循環輕鬆實現。

+0

是的先生這是完美的解決方案請make方法generateTokens() –

+0

@ MaqsoodHakro對不起,但請閱讀我的答案的第一句話。試着先實現它,當你有一些特定的問題時可以自由地詢問它(最好在首次搜索超過至少15分鐘後)。 – Pshemo

+0

@MaqsoodHakro請仔細閱讀本文[向作業有問題的學生打開信件](http://meta.programmers.stackexchange.com/q/6166) – Pshemo

0

//只是你必須調用possibleSetsOfString(),以使可能的套..它會給ü在一個列表中的可能套...

public String concitinate(String st, int start, int end) { 

    int i = start; 
    int j = end + 1; 
    entities = new ArrayList<String>(Arrays.asList(st.trim().split("\\s+"))); 

    String p = ""; 
    String num = ""; 
    for (int k = i; k < j; k++) { 

     p += entities.get(k) + " "; 

     num += +k + ","; 


    } 
    numbers.add(num); 




    p = p.replaceAll("()+", " "); 
    return p.trim(); 
} 

public ArrayList<String> possibleSetsOfString(String txt) { 
    ArrayList<String> mylist = new ArrayList<String>(); 
    lengthOfString = countWords(txt); 

    int k = 0; 
    // int j=0; 
    for (int i = 0; i < lengthOfString; i++) { 
     for (int j = 0; j < lengthOfString - k; j++) { 
      String s = concitinate(txt, j, j + k); 
      mylist.add(s); 


     } 
     k++; 
    } 




    // Collections.sort(mylist, Collections.reverseOrder()); 

    Collections.reverse(mylist); 
    Collections.reverse(numbers); 

    return mylist; 

} 
相關問題