- *原始字符串是"abc",打印得到下列所有组合情况:
- *"a" "b" "c"
- *"ab" "bc" "ca" "ba" "cb" "ac"
- *"abc" "acb" "bac" "bca" "cab" "cba"
- *
- */
- public class Test35 {
- public static void main(String[] args) {
- String str="abc";
- //hashSet去重复
- HashSet<String> hs=new HashSet<String>();
- for(int i=0;i<str.length();i++)
- {
-
- StringBuilder sb =new StringBuilder();
- //StringBuilder对象 添加字符串
- sb.append(str.charAt(i));
- //集合添加 这里添加 a b c三个元素
- hs.add(str.charAt(i)+"");
-
- System.out.print(str.charAt(i)+",");
- for (int y = 0; y < str.length(); y++) {
- //这里三次循环 第一次为 a ,第二次b 第三次 c
- StringBuilder sb1=sb;
- //判断 sb1里面是否包括该字符,不包括则添加
- if(!sb1.toString().contains(str.charAt(y)+""))
- {
- //添加不包括的字符
- sb1=sb.append(str.charAt(y));
- //集合添加,
- hs.add(sb1.toString());
- System.out.print(sb1.toString()+",");
- }
-
- }
- //反向在添加一次
- for (int z = str.length()-1; z >= 0; z--) {
- StringBuilder sb2=sb;
- if(!sb2.toString().contains(str.charAt(z)+""))
- {
- sb2=sb.append(str.charAt(z));
- hs.add(sb2.toString());
- System.out.print(sb2.toString()+",");
- }
-
- }
- }
- System.out.println(hs);
- }
- }
复制代码
一个大for为什么嵌套的两个for 只能添加一个for里面的, 不注释则输出和注释第二个相同。注释掉第1个 则相反。
解决的办法只能是生成两个大for 每个for里面 放一个for |
|