文字列の整列とグループ化
2124 ワード
プログラミングの問題をする時、よく文字列の配置と組み合わせの問題に出会います。ここでまとめます。
1.文字の全配列(重複なし)
1.文字の全配列(重複なし)
/**
* ,
* @param list
* @param n ( 0)
*/
public static void permute(char[] list,int n){
if(n==list.length){
for(int i=0;i
2.文字の全配列(重複文字を含む) /**
* ( )
* @param list
* @param n ( 0)
*/
public static void permute(char[] list,int n){
if(n==list.length){
for(int i=0;i
3.文字の組み合わせ(重複なし)public class Test {
//
static ArrayList stack = new ArrayList<>();
public static void main(String[] args) {
String str = "1234";
for(int i=0;i=m||n<0)
return;
//
stack.add(list[start]);
if(n==0)
System.out.println(stack);
combine(list, start+1, m, n-1);
//
stack.remove(stack.size()-1);
combine(list, start+1, m, n);
}
}
4.文字の組み合わせ(重複文字を含む)public class Test {
static StringBuilder sb = new StringBuilder();
static ArrayList ans = new ArrayList<>();
public static void main(String[] args) {
String str = "1223";
for(int i=0;i=m||n<0)
return;
//
sb.append(list[start]);
if(n==0){
String str = sb.toString();
if(!ans.contains(str))
ans.add(str);
}
combine(list, start+1, m, n-1);
//
sb.deleteCharAt(sb.length()-1);
combine(list, start+1, m, n);
}
}