【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. 字符串的排列相关推荐

  1. LeetCode——剑指 Offer 38. 字符串的排列

    剑指 Offer 38. 字符串的排列 题目 输入一个字符串,打印出该字符串中字符的所有排列.你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.示例:输入:s = "abc" ...

  2. ++递归 字符串全排列_剑指 Offer 38. 字符串的排列

    剑指 Offer 38. 字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" ...

  3. 剑指 Offer 38. 字符串的排列

    import java.util.ArrayList; import java.util.HashSet; import java.util.List;/*** 剑指 Offer 38. 字符串的排列 ...

  4. 【击败时间100%】剑指 Offer 38. 字符串的排列

    立志用最少的代码做最高效的表达 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出 ...

  5. 【LeetCode笔记】剑指 Offer 38. 字符串的排列(Java、字符串、DFS)

    文章目录 题目描述 思路 && 代码 二刷 打卡第五天- 题目描述 和这道题很相似,只是数据结构不同 思路 && 代码 DFS + 辅助访问数组 + Set 减枝 通过 ...

  6. list转字符串_剑指offer 38——字符串的排列

    本题主要在于对回溯的理解,优化时可以结合 java 特性,以及排列的一些知识. 原题 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例 ...

  7. 【算法】剑指 Offer 38. 字符串的排列 【重刷】

    1.概述 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出:["abc ...

  8. 2021-09-01剑指 Offer 38. 字符串的排列

    class Solution {public:vector<string> permutation(string s) {dfs(s, 0);return res;} private:ve ...

  9. 剑指 Offer 38. 字符串的排列(有重复元素的排列)

    思路:dfs 暴搜 class Solution { public:vector<string> permutation(string s) {vector<string> a ...

最新文章

  1. ES聚合底层机制-bucket深的话采用广度优先更好,而如果是年度统计还是深度优先好...
  2. python语言有什么用-Python到底有什么用?为什么那么多人都在学Python?
  3. java 静态成员不能调用 非静态成员_为什么静态成员不能访问非静态成员
  4. python统计学书籍推荐_一位90后统计学硕士的深悟:统计其实有门道!AI还能这样学!(精荐40本书+20视频资源...
  5. 如何查询当前SAP用户所属的组织单元(organization unit)
  6. SmartSql For Asp.Net Core 最佳实践
  7. Spring集成Mybatis多数据源配置
  8. 使用Xerte创建简单的在线学习资料的指南
  9. java中的holder类_java – HashMap中Holder类的用途是什么?
  10. 5种Python使用定时调度任务的方式
  11. 程序员——神圣的职业
  12. __init__.py的作用是什么?
  13. 微软MCITP系列课程(二四)利用组策略部署软件
  14. jQuery 实现图片动画代码
  15. php中的get_called_class()方法
  16. 基于HLS流媒体协议视频加密的解决方案
  17. vmware您无权输入许可证秘钥
  18. 虚拟机服务器断网,Vmware虚拟机断网不能上网的解决方法教程[多图]
  19. vi编辑器基本命令(简略)
  20. 无盘网吧服务器比单机快吗,锐起无盘网吧系统打造比有盘更快的速度

热门文章

  1. 【0】Zookeeper QA
  2. 前端上传数据-按解析顺序
  3. JS获取当前屏幕宽高
  4. 搜狗2011笔试题+答案解析
  5. 计算机启用网络查找,怎么搜索局域网中的电脑
  6. python统计元音总数_python – 元音序列计数
  7. linux内核中TCP接收的实现
  8. shell 脚本字符串 分割或截取
  9. (14)FPGA面试题线与逻辑
  10. java解析简历_java:解析word文档(前程无忧简历),最好有代码案例?poi或者jacob解析都可以,有jar资源,求急。感谢...