Go语言实现:【剑指offer】字符串的排列
2024-10-08 05:31:14
该题目来源于牛客网《剑指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))
}
}
最新文章
- 移动端Viewport &; 使用rem来开发移动端网站
- Entityframework常用命令
- 深度学习多机多卡解决方案-purine
- C#检验数据有效性验证类
- SPOJ VLATTICE Visible Lattice Points 莫比乌斯反演
- PHP 文字,图片水印,缩略图,裁切成小图(大小变小)
- java常见错误的列表
- Eclipse主题设置
- 工具类 Util.Browser
- MindManager 安装注册
- servlet中 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver异常
- poj1988 Cube Stacking 带权并查集
- Day3-1 函数
- maven加载本地jar包到repository
- CenOS常用命令
- mysql 严格模式 Strict Mode说明(转)
- 网站首页多URL可访问,如何集中首页网站权重?
- 服装类Web原型制作分享——Rodd &; Gunn
- Node简单的控制台读取和文件操作
- 洛谷 P1993 小K的农场 解题报告