- 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
- 原始字符串是"abc",打印得到下列所有组合情况:
- "a" "b" "c"
- "ab" "bc" "ca" "ba" "cb" "ac"
- "abc" "acb" "bac" "bca" "cab" "cba"
- 思路:
- 1,若先输出a,剩下的bc,可以把b或c添加到a上,变成ab、ac,若把b添加到a上,剩下的就是c,
- 把c再添加到ab上,这样a开头的就有了,a、ab、ac、abc、acb
- 2,以上的思想就是先输出什么,就把这部分截取掉,然后再把剩下的字符截取出来再加到截取的字符上面,再输出;然后继续截取,直到剩下的字符串为空,可以考虑使用递归。
- */
- public class Test6 {
- public static void main(String[] args) {
-
- // 以下供测试使用
- Test6m("","abc");
- }
- private static void Test6m(String prestr,String newstr2) {
-
- for(int i=0;i<newstr2.length();i++){
-
- StringBuilder builder=new StringBuilder(newstr2);
-
- //截取第i个字符,并添加到newpre上
- String newpre=prestr+newstr2.substring(i, i+1);
- //打印输出newpre
- System.out.println(newpre);
-
- //剩下的字符串
- String newstr=builder.deleteCharAt(i).toString();
-
- if("".equals(newstr)) break;
-
- //递归,每次截取一个字符
- Test6m(newpre,newstr);
- }
- }
- }
复制代码 |