黑马程序员技术交流社区
标题:
关于获取一个字符串的不重复字符组合情况
[打印本页]
作者:
突然世界晴
时间:
2015-4-21 14:47
标题:
关于获取一个字符串的不重复字符组合情况
*原始字符串是"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
作者:
突然世界晴
时间:
2015-4-21 14:49
为什么会出现这种情况,一个for不能全部添加
作者:
itheima_llt
时间:
2015-4-21 20:19
不错,顶的人不多啊,快点继续
作者:
itheima_llt
时间:
2015-4-21 22:01
必须得顶呀!
作者:
itheima_llt
时间:
2015-4-21 23:30
大家看怎么样 我认为很好.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2