亮亮深吸一口气,小心地将盒子打开,里面是一张地图,地图上除了一些奇怪的字母以外没有任何路线信息,这可让亮亮犯了愁,这些字母代表了什么意思呢? 亮亮绞尽脑汁也想不出什么思路,突然,亮亮眼前一亮,“我可以把这些字母所有的排列方式全部写出来,一定可以找到答案!” 于是,亮亮兴奋的开始寻找字母里的秘密。
每组数据输入只有一行,是一个由不同的大写字母组成的字符串,已知字符串的长度在1到9之间,我们假设对于大写字母有'A' < 'B' < ... < 'Y' < 'Z'。
输出这个字符串的所有排列方式,每行一个排列,要求字母序比较小的排列在前面。
WHL
HLW<br/> HWL<br/> LHW<br/> LWH<br/> WHL<br/> WLH<br/>
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { char[] ch = sc.next().toCharArray(); List<String> list = new ArrayList<String>(); permutation(ch, 0, list); Collections.sort(list); for (String s:list) { System.out.println(s); } } } public static void permutation(char[] ch, int p, List<String> list) { String res = ""; if(p == ch.length - 1) { for (int i = 0; i < ch.length; i ++ ) { res += ch[i] + ""; } list.add(res); } else { for (int i = p; i < ch.length; i ++ ) { swap(ch, p, i); permutation(ch, p + 1, list); swap(ch, p, i); } } } public static void swap(char[] ch, int o1, int o2) { char temp = ch[o1]; ch[o1] = ch[o2]; ch[o2] = temp; } }
//之前获取排列组合方法有超出内存,做出来还是很开心的。希望有帮助
import java.util.*;
public class Main {
static List<String> list=new ArrayList<String>();
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext())
{
String input=scanner.nextLine();
permutation(input.toCharArray(), 0); //获取排列组合
Collections.sort(list,new Comparator<String>() //按照字母排序
{
@Override
public int compare(String o1, String o2)
{ return compare1(o2,o1,0);
} });
for (String string : list)
System.out.println(string);
}
scanner.close();
}
public static int compare1(String o1, String o2,int n)
{
if (o2.charAt(n)-o1.charAt(n)==0)
{
return compare1(o1,o2,n+1);
}
else {
return o2.charAt(n)-o1.charAt(n);
}
}
public static void permutation(char[] str, int i) {
if (i >= str.length)
return;
if (i == str.length - 1) {
list.add(String.valueOf(str));
} else {
for (int j = i; j < str.length; j++) {
char temp = str[j];
str[j] = str[i];
str[i] = temp;
permutation(str, i + 1);
temp = str[j];
str[j] = str[i];
str[i] = temp;
}
}
}
}