| 复制代码编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
原始字符串是"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);
                }
        }
}
 |