加载中...
面试题 08.07-无重复字符串的排列组合(Permutation I LCCI)
发表于:2021-12-03 | 分类: 中等
字数统计: 344 | 阅读时长: 1分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/permutation-i-lcci

英文原文

Write a method to compute all permutations of a string of unique characters.

Example1:

 Input: S = "qwe"
 Output: ["qwe", "qew", "wqe", "weq", "ewq", "eqw"]

Example2:

 Input: S = "ab"
 Output: ["ab", "ba"]

Note:

  1. All charaters are English letters.
  2. 1 <= S.length <= 9

中文题目

无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。

示例1:

 输入:S = "qwe"
 输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]

示例2:

 输入:S = "ab"
 输出:["ab", "ba"]

提示:

  1. 字符都是英文字母。
  2. 字符串长度在[1, 9]之间。

通过代码

高赞题解

class Solution {
    List<String> list = new ArrayList<>();

    public String[] permutation(String S) {
        permutate(S.toCharArray(), 0);
        String[] res = new String[list.size()];
        for (int i = 0; i < res.length; i++) {
            res[i] = list.get(i);
        }
        return res;
    }

    public void permutate(char[] arr, int first) {
        if (first == arr.length - 1) {
            list.add(new String(arr));
            return;
        }
        for (int i = first; i < arr.length; i++) {
            swap(arr, first, i);
            permutate(arr, first + 1);
            swap(arr, first, i);
        }
    }

    public void swap(char[] arr, int i, int j) {
        char temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

统计信息

通过次数 提交次数 AC比率
22534 27694 81.4%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
面试题 08.03-魔术索引(Magic Index LCCI)
下一篇:
面试题 10.05-稀疏数组搜索(Sparse Array Search LCCI)
本文目录
本文目录