字符串排列_27
2023-04-18 16:10:33 时间
思路: 利用回溯法:
回朔法其实是在构造一棵生成树。对于"abc",第一个位置有三种取值,第二个位置有两种取值,第三个位置有一种取值。
public ArrayList<String> Permutation(String str) {
List<String> res = new ArrayList<>();
if (str == null || str.length() <= 1) {
res.add(str);
return (ArrayList<String>) res;
}
permutationHelper(str.toCharArray(), 0, res);
Collections.sort(res);
return (ArrayList<String>) res ;
}
//回溯法其实是在构造一棵生成树。对于"abc",第一个位置有三种取值,第二个位置有两种取值,第三个位置有一种取值。
private void permutationHelper(char[] arr, int index, List<String> res) {
if (index == arr.length - 1 && !res.contains(String.valueOf(arr))) {
res.add(String.valueOf(arr));
}
for (int i = index; i < arr.length; i++) {
swap(arr,i,index);
permutationHelper(arr,index+1,res);
swap(arr,i,index);
}
}
private void swap(char[] arr, int a, int b) {
char temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
相关文章
- OpenInfra基金会:构建开源基础设施技术的下一个十年
- 小菜学网络之域名系统
- 视频会议中就能签合同 腾讯云推出“云签约”解决方案
- 服务治理治什么,10张图告诉你答案
- 云服务商Fastly故障致数千网站瘫痪,目前已恢复
- 5G时代 之 大厂之战
- 企业正在充分利用机器学习运营来获取商业利益
- 博士意外发现秘密:DALL-E 2自创语言,人看不懂但能生成特定图像,可能会被用来搞事!
- 无线技术如何改变世界
- 悄无声息,Google已禁止Colab上的Deepfake项目
- VMware Anywhere Workspace为混合型工作团队提供更简单、更安全的Zoom协作
- 边缘人工智能(Edge AI)能为我们做些什么?
- 网络安全编程:C语言逆向之循环结构分析
- 为什么物联网没有云计算就不能成功
- 建筑中的AI:人工智能如何为智能施工铺平道路?
- 重罚阿里的“榔头”能否敲醒互联网巨头?
- 人工智能如何在2022年增强企业的勒索软件防御能力?
- 聊聊网络设备那点儿事儿
- 人工智能平台方案中的质量工程设计
- 人工智能和区块链技术如何解放艺术?