输入一个字符串,打印出该字符串中字符的所有排列。

你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

示例:

输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]

限制:

1 <= s 的长度 <= 8

代码:

class Solution {

public String[] permutation(String s) {

List<String> result = new ArrayList<>();

boolean visited[] = new boolean[s.length()];

char arr[] = s.toCharArray();

Arrays.sort(arr);

StringBuilder x = new StringBuilder();

helper(result,visited,arr,x);

String res[] = new String[result.size()];

for(int i=0;i<result.size();i++){

res[i] = result.get(i);

}

return res;

}

public void helper(List<String> result,boolean visited[],char arr[],StringBuilder x){

if(x.length()==arr.length){

result.add(x.toString());

return;

}

for(int i=0;i<arr.length;i++){

if(i!=0&&arr[i]==arr[i-1]&&visited[i-1]) continue;

if(!visited[i]){

x.append(arr[i]);

visited[i] = true;

helper(result,visited,arr,x);

x.deleteCharAt(x.length()-1);

visited[i] = false;

}

}

}

}

【剑指offer】面试题38:字符串的排列(Java)相关推荐

  1. 剑指Offer - 面试题38. 字符串的排列(全排列,排序,回溯+剪枝)

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

  2. 剑指offer面试题38. 字符串的排列(回溯)

    题目描述 **输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.** 思路 详见链接 代码 class Solution:def permut ...

  3. 剑指offer——面试题38:数字在排序数组中出现的次数

    剑指offer--面试题38:数字在排序数组中出现的次数 20180906整理 Solution1: [注意]先利用二分查找扎到一个值然后再顺序遍历的做法时间复杂度也是O(n)O(n)O(n),代码也 ...

  4. 剑指offer面试题6 重建二叉树(java)

    注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...

  5. [剑指offer]面试题第[58]题[Leetcode][JAVA][第151题][翻转单词][字符串常用函数总结]

    [问题描述] 给定一个字符串,逐个翻转字符串中的每个单词.示例 1: 输入: "the sky is blue" 输出: "blue is sky the" [ ...

  6. [剑指offer]面试题第[67]题[Leetcode][JAVA][第8题] 字符串转换整数 (atoi)[字符串]

    [问题描述] 请你来实现一个 atoi 函数,使其能将字符串转换成整数.首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下:如果第一个非空字符为正或者 ...

  7. C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数

    数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&t ...

  8. [剑指offer]面试题第[37]题[Leedcode][JAVA][第297题][二叉树列的序列化与反序列化][递归][BFS]

    [问题描述][中等] 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据.请设 ...

  9. [剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]

    [问题描述][第3题][无重复字符的最长字串] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重 ...

  10. [剑指offer]面试题第[28]题[Leedcode][JAVA][第101题][对称二叉树][队列][递归]

    [问题描述][简单] 给定一个二叉树,检查它是否是镜像对称的.例如,二叉树 [1,2,2,3,4,4,3] 是对称的.1/ \2 2/ \ / \ 3 4 4 3 [解答思路] 1. 递归 时间复杂度 ...

最新文章

  1. 何恺明团队新作:只用普通ViT,不做分层设计也能搞定目标检测
  2. 在CentOS/Debian/Ubuntu上编译安装最新版 GCC 8 , cmake 3 和ninja
  3. Tornado写简易服务器
  4. C#连接mysql数据库的一个例子和获取本机IP的方法
  5. 图书馆座位预定管理系统前端设计_图书馆座位预约管理信息系统设计设计.doc...
  6. boost::geometry::for_each_coordinate用法的测试程序
  7. 【今晚七点】:对话余世兵——从OnVideo到快手云剪
  8. 常州彪马机器人_PUMA560型机器人
  9. Makefile学习资料及书籍推荐
  10. 蔡高厅老师 - 高等数学阅读笔记 - 05 - 导数和微分 - 01 (22、23、24、25、26、27)
  11. MakeGenericMethod Reflection 反射 ObjectToXmlT Generic XmlSerializer
  12. 处理 Exception 的几种实践,很优雅,已被很多团队采纳!
  13. python html5 便利店收银系统_便利店收银系统使用教程
  14. python中sys模块下载_python模块:sys模块
  15. Attribute特性定义及应用
  16. html文字自动放大缩小单位,如何css控制字体按百分比放大缩小
  17. 图形图像处理 —— 图像缩放算法
  18. git clone 修改配置 设置代理 加速
  19. Linux系统中CPU占用率过高问题原因分析
  20. 基于SU-03T语音模块的超声波拍照系统

热门文章

  1. LeetCode 1103. 分糖果 II
  2. spring手动回滚事务_Spring总结---gt;03
  3. php保存流文件到本地,php下载保存文件保存到本地的两种实现方法
  4. NeurIPS'20 | 通过文本压缩,让BERT支持长文本
  5. 工业解密:百度地图背后的路线时长预估模型!
  6. Android OOM案例分析
  7. Redis系列教程(一):Redis缓存的设计、性能、应用与数据集群同步
  8. 2019 最新阿里中间件Java 4轮面试题!60万年薪起步~
  9. 论文浅尝 | 利用多语言 wordnet 上随机游走实现双语 embeddings
  10. 容器中用uwsgi协议部署注意的问题以及用flask部署