【牛客网】字符串的排列
2016-11-14 17:25
148 查看
题目:
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
《剑指Offer》上代码
牛客网AC代码:
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
《剑指Offer》上代码
void Permutation(char* pStr, char* pBegin){ if (*pBegin == '\0'){ printf("%s\n", pStr); } 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; } } } void Permutation(char* pStr){ if (pStr == NULL) return; Permutation(pStr, pStr); }
牛客网AC代码:
class Solution { public: vector<string> Permutation(string str) { if (str == "") return result; Permutation(str,0); sort(result.begin(),result.end()); auto it = unique(result.begin(),result.end()); result.erase(it,result.end()); return result; } void Permutation(string str,int begin) { if (begin == str.length()) { result.push_back(str); } for (int i = begin;i < str.length();i++) { swap(str[begin],str[i]); Permutation(str,begin + 1); swap(str[begin],str[i]); } } private: vector<string> result; };
相关文章推荐
- 牛客--剑指offer--字符串的排列
- 输出字符串的所有排列组合
- 字符串的全排列和组合算法
- POJ 2159 Ancient Cipher(字符串排列替换)
- 【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。
- 字符串的排列(字典序)
- 剑指offer 面试题28 字符串的排列与集合的所有子集
- 字符串的排列
- 确定某字符串的所有排列组合
- 字符串的排列
- 剑指Offer学习总结-字符串的排列
- 【做题记录】[牛客网]网易2018校招内推编程题集合:第一题-彩色的砖块排列
- 字符串的排列
- 字符串的排列
- 字符串的排列
- 95 1.判断一字符串是不是对称 2.用递归的方法判断整数组 a[N]是不是升序排列
- 【剑指offer】字符串的排列
- 面试题28:字符串的排列
- 字符串全排列代码实现
- 字符串的排列组合问题