我想動態編寫任何字符串。在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"
我想動態編寫任何字符串。在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"
所以你想要一組所有連續的串聯字符串。
假設你的輸入是一個字符串數組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個字符串
如果我們給abcd =」a「」b「」c「」ab「」bc「」cd「 「abc」「bcd」「abcd」 –
這是一個可以生成輸出的實現的僞描述。你會爲1-n(生成序列的長度)和內循環分叉0-(ni)形成一個for循環,這個循環有點讓你的值偏移 – xuma202
因爲這看起來像功課,我會盡量解釋解決方案但你是需要創建代碼的人。
如果我們有相同的元件
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
的所有令牌應該像這樣工作:
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
是元素的量),並收集在一個地方的所有結果。你可以通過簡單的循環輕鬆實現。
//只是你必須調用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;
}
發生了什麼事與「「一C」'? – Pshemo
不,先生,我不需要「一個C」。只是我想輸出像「a」「b」「c」「a b」「b c」「abc」。 –
先生,如果我拿四串,那麼輸出應該是... abcd =「a」「b」「c」「d」「ab」「bc」「cd」「abc」「bcd」「abcd」 –