【LeetCode】剑指 Offer 38. 字符串的排列
【LeetCode】剑指 Offer 38. 字符串的排列
文章目录
- 【LeetCode】剑指 Offer 38. 字符串的排列
package offer;import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;public class Solution38 {public static void main(String[] args) {String s = "abc";Solution38 solution = new Solution38();String[] res = solution.method(s);System.out.print("[");for(int i = 0; i < res.length; i++){System.out.print('"');System.out.print(res[i]);System.out.print('"');if(i != res.length - 1) System.out.print(",");}System.out.print("]");}char[] c;List<String> res = new LinkedList<>();private String[] method(String s){c = s.toCharArray();dfs(0);return res.toArray(new String[res.size()]);}private void dfs(int x){if(x == c.length - 1){res.add(String.valueOf(c));return;}HashSet<Character> set = new HashSet<>();for(int i = x; i < c.length; i++){if(set.contains(c[i])) continue; //重复则不交换set.add(c[i]);swap(i, x);dfs(x+1);swap(i, x);}}private void swap(int a, int b){char temp = c[a];c[a] = c[b];c[b] = temp;}
}//时间复杂度为 O(n*n!)
//空间复杂度为 O(n^2),递归中辅助 Set 累计存储的字符数量最多为 N + (N-1) + ... + 2 + 1 = (N+1)N/2N+(N−1)+...+2+1=(N+1)N/2
【LeetCode】剑指 Offer 38. 字符串的排列相关推荐
- LeetCode——剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 题目 输入一个字符串,打印出该字符串中字符的所有排列.你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.示例:输入:s = "abc" ...
- ++递归 字符串全排列_剑指 Offer 38. 字符串的排列
剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...
- 剑指 Offer 38. 字符串的排列
import java.util.ArrayList; import java.util.HashSet; import java.util.List;/*** 剑指 Offer 38. 字符串的排列 ...
- 【击败时间100%】剑指 Offer 38. 字符串的排列
立志用最少的代码做最高效的表达 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出 ...
- 【LeetCode笔记】剑指 Offer 38. 字符串的排列(Java、字符串、DFS)
文章目录 题目描述 思路 && 代码 二刷 打卡第五天- 题目描述 和这道题很相似,只是数据结构不同 思路 && 代码 DFS + 辅助访问数组 + Set 减枝 通过 ...
- list转字符串_剑指offer 38——字符串的排列
本题主要在于对回溯的理解,优化时可以结合 java 特性,以及排列的一些知识. 原题 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例 ...
- 【算法】剑指 Offer 38. 字符串的排列 【重刷】
1.概述 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出:["abc ...
- 2021-09-01剑指 Offer 38. 字符串的排列
class Solution {public:vector<string> permutation(string s) {dfs(s, 0);return res;} private:ve ...
- 剑指 Offer 38. 字符串的排列(有重复元素的排列)
思路:dfs 暴搜 class Solution { public:vector<string> permutation(string s) {vector<string> a ...
最新文章
- ES聚合底层机制-bucket深的话采用广度优先更好,而如果是年度统计还是深度优先好...
- python语言有什么用-Python到底有什么用?为什么那么多人都在学Python?
- java 静态成员不能调用 非静态成员_为什么静态成员不能访问非静态成员
- python统计学书籍推荐_一位90后统计学硕士的深悟:统计其实有门道!AI还能这样学!(精荐40本书+20视频资源...
- 如何查询当前SAP用户所属的组织单元(organization unit)
- SmartSql For Asp.Net Core 最佳实践
- Spring集成Mybatis多数据源配置
- 使用Xerte创建简单的在线学习资料的指南
- java中的holder类_java – HashMap中Holder类的用途是什么?
- 5种Python使用定时调度任务的方式
- 程序员——神圣的职业
- __init__.py的作用是什么?
- 微软MCITP系列课程(二四)利用组策略部署软件
- jQuery 实现图片动画代码
- php中的get_called_class()方法
- 基于HLS流媒体协议视频加密的解决方案
- vmware您无权输入许可证秘钥
- 虚拟机服务器断网,Vmware虚拟机断网不能上网的解决方法教程[多图]
- vi编辑器基本命令(简略)
- 无盘网吧服务器比单机快吗,锐起无盘网吧系统打造比有盘更快的速度