基础测试有这么一道题,我的想是嵌套循环,但是很片面,如果输入3个以上字符的字符串,我这程序就没用。那位大神教教思路。
/**
* 第七题: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
原始字符串是"abc",打印得到下列所有组合情况:
"a" "b" "c"
"ab" "bc" "ca" "ba" "cb" "ac"
"abc" "acb" "bac" "bca" "cab" "cba"
*/
import java.io.*;
class Test7
{
public static void main(String[] args) throws Exception
{
while(true)
{
//键盘录入。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = bufr.readLine();
if("886".equals(line))
break;
//转换成字符数组。
char[] ch = line.toCharArray();
//单个字符。
for(int x=0;x<ch.length;x++)
System.out.print("“"+Character.toString(ch[x])+"”");
System.out.println();
//两个字符,每个位置都对字符数组遍历,除掉相同的。
for(int x=0;x<ch.length;x++)
{
for(int y=0;y<ch.length;y++)
{
if(x!=y)
System.out.print("“"+Character.toString(ch[x])+Character.toString(ch[y])+"”");
continue;
}
}
System.out.println();
//三个字符组合。
for(int x=0;x<ch.length;x++)
{
for(int y=0;y<ch.length;y++)
{
for(int z=0;z<ch.length;z++)
if(x!=y&&x!=z&&y!=z)
System.out.print("“"+Character.toString(ch[x])+Character.toString(ch[y])+Character.toString(ch[z])+"”");
continue;
}
}
System.out.println();
}
}
}
|