字符串的全排列(输入一个字符串,按字典序打印出该字符串中字符的所有排列。)

79 篇文章 1 订阅
订阅专栏
26 篇文章 3 订阅
订阅专栏

字符串排列

题目描述:

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

输入描述:

输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

分析:

固定第一个字符,递归取得首位后面的各种字符串组合;再将第一个字符与后面每一个字符交换,同样递归获得其字符串组合;每次递归都是到最后一位时结束,递归的循环过程,就是从每个子串的第二个字符开始依次与第一个字符交换,然后继续处理子串。

图解:

递归过程的程序图解:

代码:

import java.util.*;
public class Solution {
    public ArrayList<String> Permutation(String str) {
        ArrayList<String> result = new ArrayList<>();
        if(str.length()==0 ||str == null){
            return result;
        }
        PermutationHelper(str.toCharArray(),0,result);
        Collections.sort(result);
        return result;
    }
    private void PermutationHelper(char[] chars,int i,ArrayList<String> result){
        //已经递归到了字符串最后一位,判断集合中有没有这个字符串,没有则加入
        if(i== chars.length-1){
            if(!result.contains(new String(chars))){
                result.add(new String(chars));
                return;
            }
        }else{
            //首次传进来的i为0,代表首位字符
            //依次处理i与i后面的每个字符(索引j)交换
            for(int j=i; j<chars.length; j++){
                swap(chars,i,j);//交换
                PermutationHelper(chars,i+1,result);//继续递归交换后的子串
                swap(chars,i,j);//还原
            }
        }
    }
    private void swap(char[] chars,int i,int j){
        if(i != j){
            char temp = chars[i];
            chars[i] = chars[j];
            chars[j] = temp;
        }
    }
}

 

quanpailie.zip_输入全排列
09-24
输入n,对1到n的整数全排列并按照大小顺序输出
【算法基础】字符串全排列算法
Qregi的博客
08-25 4367
题目描述 输入一个字符串,按字典序打印出该字符串字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 这道题是剑指offfer一道经典的题,如果有n个元素,我们就能有n*(n - 1)个全排列,n为1时,只有一个全排列 举...
打印一个字符串的全部排列
Beat_IT的博客
07-12 2140
输入一个字符串打印这个字符串字符全排列。 1. 首选考虑字符重复的情况 eg: 输入abc 输出:abc acb bac bca cab cba 思路: 考虑把复杂的问题分解成小的问题。比如,把一个字符串看成由两部分组成:第一部分是它的第一个字符;第二部分是后面的所有字符。而我们求整个字符串排列,可以看成两步。第一步求所有可能出现在第一个位置的字符,即把第一个字符和后面所有...
(牛客网)字符串-输出字符串的所有排列(Python)
就是这个七昂的博客
03-16 3587
输入一个字符串,按字典序打印出该字符串字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 # -*- coding:utf-8 -*- import itertools class Solution: def P...
JZ38 字符串排列
qq_43560701的博客
05-29 589
JZ38 字符串排列 描述 输入一个长度为 n 字符串打印出该字符串字符的所有排列,你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数据范围:n < 10 要求:空间复杂度 O(n!),时间复杂度 O(n!) 输入描述:输入一个字符串,长度不超过10,字符只包括大小写字母。 示例1 输入: "ab" 返回值: ["ab","ba"] // 说明:返回["ba","ab"]也是正确的
输入一个字符串打印出该字符串字符的所有排列
nciaebupt
07-06 7477
/* copyright@nciaebupt 转载请注明出处 题目:输入一个字符串打印出该字符串字符的所有排列。例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 分析:这是个递归求解的问题。递归算法有四个特性:(1)必须有可达到的终止条件,否则程序将陷入死循环;(2)子问题在规模上比原问题小;(3)子问题可通过再次递归调用求解
剑指OfferJZ38字符串排列(next_permutation实现、康托展开)
m0_51864047的博客
05-08 445
剑指offer JZ38 题目描述 输入一个长度为 nnn 字符串打印出该字符串字符的所有排列,你可以以任意顺序返回这个字符串数组。 例如:输入字符串 ABC\text{ABC}ABC ,则输出由字符 A,B,C\text{A,B,C}A,B,C 所能排列出来的所有字符串 ABC\text{ABC}ABC , ACB\text{ACB}ACB , BAC\text{BAC}BAC , BCA\text{BCA}BCA , CBA\text{CBA}CBA 和 CAB\text{CAB}CAB。 数据范围
输入一个字符串,按字典序打印出该字符串字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
u013686654的博客
07-10 6121
剑指offer:输入一个字符串,按字典序打印出该字符串字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路:本题考查递归解决问题的思路。首先将输入字符串转化为有序字符串。将字符串分为两部分,第一个字符,和后续N-1个字符。后续问题可以用递归函数。 按顺序确定第一个字符,然后递归操作剩下的N-1个字符(要
字符串排列(剑指offer第28题)
alan_gaohaodong的博客
11-12 396
一、题目描述           输入一个字符串,按字典序打印出该字符串字符的所有排列。           例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba  输入描述:                      输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母 二、思路解析 全排列 使用 递归 回...
python求一个字符串的所有排列的实现方法
01-21
设计一个程序,当输入一个字符串时,要求输出这个字符串的所有排列。 例如输入字符串 abc,要求输出由字母 a、b、c 所能排列出来的所有字符串 abc,acb,bac,bca,cab,cba。 方法:递归法 以字符串 abc 为例介绍...
如何求解字符串字典序最大的子序列
12-20
给定一个字符串,求字符串字典序最大的子序列.字典序最大的子序列是这样构造的:给定一个字符串 a0a1…an−1a_{0}a_{1}…a_{n-1}a0​a1​…an−1​ ,首先在字符串找到值最大的字符 aia_{i}ai​,然后在剩余的字符串...
PHP实现字符串全排列详解
01-02
输入一个字符串,按字典序打印出该字符串字符的所有排列。 例如,输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路: 1.利用递归形成递归树,达到深度优先,固定首字母的...
字符串字典序排序软件
02-23
字符串字典序排序软件,最简单的程序,可以用升序和降序两种方式输出。
剑指offerNo27. 字符串排列(Java)
01-20
输入一个字符串,按字典序打印出该字符串字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 思路: 整体分为两步: 求出出现在第一个位置上的字符,即把...
Java字符串前面或后面补0(适用于等不同长度比较) .txt
07-14
Java字符串长度不够,将其前面补0或者后面补0,适用于字典序比较前,将要比较字符串的位数保持一致,再进行比较。
字符串字典序处理.c
02-23
编写程序从某个文本文件读入若干个字符串(文本文件每行一个字符串,每个字符串长度不超过80个字符),将字符串字典序(从小到大)排序,结果输出到另一个文本文件。要求此程序能处理任意多个字符串
字符串字典序问题.txt
03-28
该字母表产生的升序字符串是指字符串字母按照从左到 右出现的次序与字母在字母表出现的次序相同,且每个字符最多出现 1 次。例如,a,b,ab, bc,xyz 等字符串都是升序字符串。 -search the postion for the given ...
打印字符串的所有排序
03-19
简洁代码,c++ 语音打印字符串的所有排序的可能。牛客网上的题目。
c语言输入一个字符串,输出该字符串字典序
最新发布
05-23
可以使用C语言的库函数`strcmp()`来比较两个字符串字典序大小。思路如下: 1. 使用`gets()`函数输入一个字符串; 2. 使用一个循环遍历字符串,去掉字符串末尾的空格; 3. 使用另一个循环遍历字符串,将每个字符转换为小写字母; 4. 使用`puts()`函数输出处理后的字符串; 5. 使用`strcmp()`函数比较两个字符串字典序大小,并输出结果。 下面是一个示例代码: ```c #include <stdio.h> #include <string.h> #include <ctype.h> int main() { char str[100]; int i, len; printf("请输入一个字符串:"); gets(str); // 去掉字符串末尾的空格 len = strlen(str); while (isspace(str[len - 1])) { str[--len] = '\0'; } // 将字符串转换为小写字母 for (i = 0; str[i]; i++) { str[i] = tolower(str[i]); } // 输出处理后的字符串 puts(str); return 0; } ``` 注意:上面的代码只是将输入字符串处理成小写字母的形式,如果要按照字典序排序,还需要使用一些排序算法,比如快速排序等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • k-means算法的实现(算法思想+流程图+代码+散点图+结果输出)-python 44150
  • Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序 37647
  • 商城首页布局实现(HTML源码) 13197
  • 字符串的全排列(输入一个字符串,按字典序打印出该字符串中字符的所有排列。) 10344
  • 【LeetCode】55. 跳跃游戏(给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。)、45. 跳跃游戏 II 9774

分类专栏

  • c语言 17篇
  • java 79篇
  • python 4篇
  • 感悟 1篇
  • Github 1篇
  • 经典笔试题 1篇
  • leetcode 54篇
  • java笔记 16篇
  • 牛客 26篇
  • 数据库笔记 4篇
  • 数据结构 10篇
  • 测试 14篇
  • HTML 3篇

最新评论

  • 中缀表达式转后缀表达式+后缀表达式的计算+中缀表达式的合法性校验

    永恒之秋: 合法性校验不对吧,比如4(4) 这种只有应该算是非法的,但是你的规则里面没有判断

  • 商城首页布局实现(HTML源码)

    不哩不哩左卫门8: 图片多大

  • 商城首页布局实现(HTML源码)

    魅影之星辰: 有图片吗?

  • k-means算法的实现(算法思想+流程图+代码+散点图+结果输出)-python

    CHENGJL717: 请问下这个是什么数据啊

  • 地下迷宫(小青蛙有一天不小心落入了一个地下迷宫,小青蛙希望用自己仅剩的体力值P跳出这个地下迷宫。)

    喜欢coding和curry的boy: 优雅,同学想问一下,右-下-左-上,这个优先级是根据什么排除来的呢,右-下这个两个优先级高能理解,左-上这是为什么呢

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 聊呗(聊天系统)
  • 超级助教(学生信息管理系统)
  • 餐馆(餐馆有n张桌子,每张桌子有一个参数a 可容纳的最大人数; 有m批客人,每批客人有两个参数:b人数,c预计消费金额。 不允许拼桌的情况下,选择其中一部分客人,使得总预计消费金额最大)
2019年138篇
2018年21篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网TXWEB布吉关键词排名推荐百色模板网站建设哪家专业丽水市网站建设公司鹰潭网络推广公司鸡西网页设计价格平凉网站搭建多少钱芜湖关键词排名榆林市网页设计哪家好盐城网站开发多少钱永州市企业网站改版哪家专业昭通网络推广报价芜湖市seo排名公司铜川市网站开发哪家专业阜新市网络推广蚌埠市网站搭建多少钱开封市网站推广价格盐城市建网站报价抚州建网站报价蚌埠市企业网站建设哪家好黑河seo排名推荐阜阳网站推广多少钱安庆市网页制作哪家好保定网站优化庆阳网页设计九江市seo排名报价同乐网站推广报价怀化市网络推广哪家专业宣城企业网站设计公司柳州市seo推荐柳州市网页设计哪家专业香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网TXWEB XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化