문자열-문자 순열 구현

1 Java[ | ]

public class MyClass {
	static void permute(String str, int a, int b) { 
		if(a == b) {
			System.out.println(str); 
			return;
		}
		for(int i=a; i<=b; i++) { 
			str = swap(str,a,i);
			permute(str, a+1, b);
			str = swap(str,a,i);
		}
	}
	static String swap(String str, int a, int b) { 
		char[] chs = str.toCharArray(); 
		chs[a] = str.charAt(b);
		chs[b] = str.charAt(a);
		return String.valueOf(chs); 
	}
	public static void main(String args[]) {
		String str = "ABC"; 
		permute(str, 0, str.length()-1);
	}
}
// ABC
// ACB
// BAC
// BCA
// CBA
// CAB

2 PHP[ | ]

<?php
function permute($str, $a=0, $b=false) {
    if($b === false) $b=strlen($str)-1;
    if($a == $b) {
        echo $str . PHP_EOL;
        return;
    }
    for($i=$a; $i<=$b; $i++) {
        swap($str,$a,$i);
        permute($str, $a+1, $b);
        swap($str,$a,$i);
    }
}
function swap(&$str, $a, $b) {
    $temp = $str[$a];
    $str[$a] = $str[$b];
    $str[$b] = $temp;
}
permute("ABC");
# ABC
# ACB
# BAC
# BCA
# CBA
# CAB
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}