【剑指offer】【九度oj】字符串的排序
来源:互联网 发布:c语言write函数 编辑:程序博客网 时间:2024/05/22 12:34
题目地址:http://ac.jobdu.com/problem.php?cid=1039&pid=11
时间限制:1 秒 内存限制:32 兆
- 题目描述:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
- 输入:
每个测试案例包括1行。
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
- 输出:
对应每组数据,按字典序输出所有排列。
- 样例输入:
abc
BCA
- 样例输出:
abc
acb
bac
bca
cab
cba
ABC
ACB
BAC
BCA
CAB
CBA
思路:1、找出给定字符串的所有排列;
2、对所有排列进行字典排序;
3、去除重复排列,输出答案。
注意:1、必须要去除重复排列,比如输入aab,排序有6种可能:aab,aba,aab,aba,baa,baa;去除重复之后,为3种可能,aab,aba,baa。若不然的话,会判wrong answer。
2、 此题若用C++stl的next_permutation函数,则会超时,所以要自己写全排列的代码。
#include <stdio.h>#include <stdlib.h>#include <string.h>int cmp( const void *a, const void *b ){char* s1 = (char *)a;char* s2 = (char *)b;return strcmp(s1, s2);}void permutation(char* pStr, char* pBegin);char s[362890][11];int count;int main(){char str[11],temp[11];int n,f,i;while(scanf("%s",str)!=-1){count = 0;n = strlen(str);permutation(str,str); //找出str的所有排列f = 1;for(i=1;i<=n;i++)f = f*i;qsort(s,f,11*sizeof(char),cmp); //对所有的排列按字典序排序strcpy(temp,"\0");for(i=0;i<f;i++)if(strcmp(temp,s[i])) //去除重复的排列{strcpy(temp,s[i]);printf("%s\n",s[i]);}}return 0;}//找出字符串的所有排列,并没有按字典序//此段代码出自何海涛的《剑指offer》void permutation(char* pStr, char* pBegin){if(*pBegin == '\0'){strcpy(s[count],pStr);count++;}else{for(char* pCh = pBegin; *pCh!='\0'; pCh++ ){char temp = *pCh;*pCh = *pBegin;*pBegin = temp;permutation(pStr,pBegin+1);temp = *pCh;*pCh = *pBegin;*pBegin = temp;}}}
- 【剑指offer】【九度oj】字符串的排序
- 【剑指Offer面试编程题】题目1519:合并两个排序的链表--九度OJ
- 【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ
- 【剑指offer】【九度oj】栈的压入压出
- 九度OJ 题目1066:字符串排序
- 九度OJ 题目1135:字符串排序
- 九度OJ 1054 字符串内排序
- 九度OJ 1066: 字符串排序
- 九度OJ 1066 字符串排序
- 九度OJ 1066 字符串排序
- 九度OJ题目1066:字符串排序
- 九度OJ 题目1066:字符串排序
- 九度oj-1135-字符串排序
- 九度OJ 题目1135:字符串排序
- 九度 OJ 1054:字符串内排序
- 九度 OJ 1066:字符串排序
- 九度oj 1054 字符串内排序
- 九度OJ-1054:字符串内排序
- Olny Flashlight
- 有趣的 C\C++ 指针
- root展讯6820
- C++麻将游戏算法深入解析
- 黑马程序员 GUI
- 【剑指offer】【九度oj】字符串的排序
- Cxf 集成spring完整示例
- 每日算法之大数加法
- 黑马程序员 高新技术上
- Eclipse中Outline和Package Explorer中显示的小图标的意义
- TopCoder SRM470 & SRM441 题解
- dom4j解析xml错误
- Mybatis技术(三) 实现物理分页
- 黑马程序员 异常