首页 > 试题广场 >

字符串的排列

[编程题]字符串的排列
  • 热度指数:926371 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。
例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。

数据范围:
要求:空间复杂度 ,时间复杂度

输入描述:
输入一个字符串,长度不超过10,字符只包括大小写字母。

示例1

输入

"ab"

输出

["ab","ba"]

说明

返回["ba","ab"]也是正确的         
示例2

输入

"aab"

输出

["aab","aba","baa"]
示例3

输入

"abc"

输出

["abc","acb","bac","bca","cab","cba"]
示例4

输入

""

输出

[""]
头像 GhostLX
发表于 2021-06-19 19:15:20
精华题解 题目陈述 大意:给定一个字符串,求出它的字符的所有排序(元素可能有重复),并且答案按从小到大给出 方法一:做法 算法思路 递归搜索进行搜素,对于第h层,枚举第h个位置,应该填入什么下标的元素 注意:此处因为字符串可能有重复的元素,故我们记录的是下标,因为下标不可能重复(相当于一种没有哈希冲突的哈希 展开全文
头像 leaves0924
发表于 2021-06-23 11:40:24
精华题解 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。示例1输入:"ab 展开全文
头像 牛客题解官
发表于 2022-04-22 12:31:14
精华题解 题目主要信息: 给定一个长度为n的字符串,求其中所有字符的全排列 字符串中可能有重复字符,打印顺序任意 字符串中只包含大小写字母 举一反三: 学习完本题的思路你可以解决如下题目: JZ12. 矩阵中的路径 方法:递归+回溯(推荐使用) 知识点:递归与回溯 递归是一个过程或函数在其定义或说明中有直 展开全文
头像 蒙牛麦片
发表于 2021-06-24 09:49:17
精华题解 JZ27 字符串的排列 题意分析 将字符串中的字符进行排列组合,生成所有的字符串。 示例输入:input = "ab"返回:["ab","ba"]解释:字符a和b可以排列组合生成ab和ba。 题解一(暴力回溯): 回想一下高中所学的排列组合 展开全文
头像 NumPy
发表于 2021-06-29 13:40:08
精华题解 一、题目描述 JZ27 字符串的排列题目大意:输入一个字符串, 按字典序打印出该字符串中字符的所有排列注意审题:可能有重复字符并且需要按照字典序打印出该字符串的所有排列 二、算法1(回溯) 解题思路 本题是一个经典的全排列的问题, 可以使用回溯算法来解决. 不过与一般的全排列问题不同的地方是它可能 展开全文
头像 Peterliang
发表于 2021-06-23 12:14:39
精华题解 题意分析 题意 给出一个字符串,需要返回这个字符串的所有的字符按照字典序的全排。(一个很经典的模板题) 前置知识 DFS的回溯法,这里我默认读者掌握了DFS的基本思想。所以我这里主要来介绍一个什么是回溯法。 我们来结合这个图来帮助大家理解什么是回溯法,这里介绍的是一棵二叉树的一个回溯,其实 展开全文
头像 一叶浮尘
发表于 2019-08-17 11:14:05
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 没想到按照自己的思路又攻克下了一道题目,在这道题目书写的过程中又进一步复习了java中String以及StringBuil 展开全文
头像 牛客题解官
发表于 2020-06-01 14:59:26
描述 这是一篇针对初学者的题解,用递归方法解决。知识点:字符串,递归,回溯难度:一星 题解 题目抽象:给定一个字符串,求该字符串的全排列。 方法:递归法 如图: 如图所示的全排列可以发现,对于这个排列,我们是固定A不动,然后交换B与C,从而得到"ABC" 和 "ACB"同理,对于"BAC"、"B 展开全文
头像 一颗闪闪发亮的马路星
发表于 2020-02-10 15:40:28
题目输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 首先读题我们发现,这种从固定的数组/String 里的取出元素进行排列组合,是经典的permutation题目。然后我们 展开全文
头像 青春期不醒症患者
发表于 2019-09-14 19:01:32
class Solution { public: vector<string> Permutation(string str) { if (str.empty()) return {}; sort(str.begin(), str.end()); 展开全文
头像 jalr4ever
发表于 2019-09-01 01:51:38
题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入:一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 思路 先学习回溯的基本套路,这里使用回溯法解 展开全文
头像 designeer
发表于 2021-11-10 12:09:29
思路 递归法,问题转换为先固定第一个字符,求剩余字符的排列;求剩余字符排列时跟原问题一样。 遍历字符串,固定可能出现在第一个位置的字符,作为第一个字符,后面剩下的字符串的组合用递归使用本函数的方式得到。 # -*- coding:utf-8 -*- cl 展开全文
头像 学无止境呀~
发表于 2019-09-18 21:06:41
27. 字符串的排列 题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路递归法,问题转换为先固定第一个字符,求剩余字符的排列;求剩余字符排列时跟原问题一样。遍历 展开全文
头像 橙子爱吃桃子
发表于 2020-05-27 10:10:11
C++简单代码/set去重/剪枝/追溯法/10行: class Solution { public: set<string> res; //去重 vector<string> Permutation(string str) { if (str. 展开全文
头像 LaMeloBall
发表于 2021-09-15 15:17:42
# -*- coding:utf-8 -*- class Solution: def Permutation(self, ss): # write code here if len(ss) <= 1: return [ss] 展开全文
头像 vorking
发表于 2020-03-19 15:56:56
字典序法、递归法的C++语言实现: //////////////////////////////////////// ①最牛逼的字典序法: 1、从右向左找到第一个正序对(array[i]<array[i+1],因为没有等号,去掉重复的排列 2、从i开始向右搜索,找到比arr 展开全文

问题信息

难度:
1442条回答 250719浏览

热门推荐

通过挑战的用户

查看代码