该题目来源于牛客网《剑指offer》专题。

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

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

Go语言实现:

func permutation(str string) []string {
var result []string
if str == "" {
return result
}
permutationHandler([]byte(str), 0, &result)
return result
} func permutationHandler(strByte []byte, i int, result *[]string) {
length := len(strByte)
if i != length {
//利用map排除重复字符
strMap := make(map[string]int)
//固定首字符,递归剩余字符;首字符依次与后面交换,继续递归剩余字符
for j := i; j < length; j++ {
_, ok := strMap[string(strByte[j])]
if !ok {
strMap[string(strByte[j])] = 1
if j != i {
strByte[i], strByte[j] = strByte[j], strByte[i]
}
permutationHandler(strByte, i+1, result)
if j != i {
strByte[i], strByte[j] = strByte[j], strByte[i]
}
}
}
} else {
*result = append(*result, string(strByte))
}
}

最新文章

  1. 移动端Viewport &amp; 使用rem来开发移动端网站
  2. Entityframework常用命令
  3. 深度学习多机多卡解决方案-purine
  4. C#检验数据有效性验证类
  5. SPOJ VLATTICE Visible Lattice Points 莫比乌斯反演
  6. PHP 文字,图片水印,缩略图,裁切成小图(大小变小)
  7. java常见错误的列表
  8. Eclipse主题设置
  9. 工具类 Util.Browser
  10. MindManager 安装注册
  11. servlet中 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver异常
  12. poj1988 Cube Stacking 带权并查集
  13. Day3-1 函数
  14. maven加载本地jar包到repository
  15. CenOS常用命令
  16. mysql 严格模式 Strict Mode说明(转)
  17. 网站首页多URL可访问,如何集中首页网站权重?
  18. 服装类Web原型制作分享——Rodd &amp; Gunn
  19. Node简单的控制台读取和文件操作
  20. 洛谷 P1993 小K的农场 解题报告

热门文章

  1. 解决elment 动态多选框组(el-checkbox-group)无法设置默认值问题
  2. 【转】常见Java面试题 – 第二部分:equals与==
  3. ArcEngine DEM叠加影像
  4. CTPN中anchors代码
  5. kettle连接oracle数据库报错,ORA-12505
  6. Spring Boot2 系列教程 (八) | 配置日志
  7. 加深对于 MVC、MVP、MVVM 的概念理解
  8. 2D地图擦除算法
  9. js-xlsx 一个实用的js 导出列表插件
  10. git reset --hard HEAD^ 在cmd中执行报错