【面试】2019.7.10京东校招提前批

算法题解:给定一个字符串输出其全排列形式的所有字符串(JAVA代码)

例如:给定字符串:ABC,输出结果有6种:

ABC ACB BAC BCA CBA CAB

解题代码

public class PrintStringPermutations {

    public static void main(String[] args) {
        String str = "ABCD";
        int n = str.length();
        PrintStringPermutations permutation = new PrintStringPermutations();
        permutation.permute(str, 0, n - 1);
    }

    /**
     * permutation function
     *
     * @param str
     *            string to calculate permutation for
     * @param l
     *            starting index
     * @param r
     *            end index
     */
    private void permute(String str, int l, int r) {
        if (l == r)
            System.out.println(str);
        else {
            for (int i = l; i <= r; i++) {
                str = swap(str, l, i);
                permute(str, l + 1, r);
                str = swap(str, l, i);
            }
        }
    }

    /**
     * Swap Characters at position
     *
     * @param a
     *            string value
     * @param i
     *            position 1
     * @param j
     *            position 2
     * @return swapped string
     */
    public String swap(String a, int i, int j) {
        char temp;
        char[] charArray = a.toCharArray();
        temp = charArray[i];
        charArray[i] = charArray[j];
        charArray[j] = temp;
        return String.valueOf(charArray);
    }
}

 

你可能感兴趣的:(校园招聘)