【剑指offer】面试题38:字符串的排列(Java)
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入: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)相关推荐
- 剑指Offer - 面试题38. 字符串的排列(全排列,排序,回溯+剪枝)
1. 题目 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 示例: 输入:s = "abc" 输出:["ab ...
- 剑指offer面试题38. 字符串的排列(回溯)
题目描述 **输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.** 思路 详见链接 代码 class Solution:def permut ...
- 剑指offer——面试题38:数字在排序数组中出现的次数
剑指offer--面试题38:数字在排序数组中出现的次数 20180906整理 Solution1: [注意]先利用二分查找扎到一个值然后再顺序遍历的做法时间复杂度也是O(n)O(n)O(n),代码也 ...
- 剑指offer面试题6 重建二叉树(java)
注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...
- [剑指offer]面试题第[58]题[Leetcode][JAVA][第151题][翻转单词][字符串常用函数总结]
[问题描述] 给定一个字符串,逐个翻转字符串中的每个单词.示例 1: 输入: "the sky is blue" 输出: "blue is sky the" [ ...
- [剑指offer]面试题第[67]题[Leetcode][JAVA][第8题] 字符串转换整数 (atoi)[字符串]
[问题描述] 请你来实现一个 atoi 函数,使其能将字符串转换成整数.首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下:如果第一个非空字符为正或者 ...
- C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数
数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&t ...
- [剑指offer]面试题第[37]题[Leedcode][JAVA][第297题][二叉树列的序列化与反序列化][递归][BFS]
[问题描述][中等] 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据.请设 ...
- [剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]
[问题描述][第3题][无重复字符的最长字串] 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重 ...
- [剑指offer]面试题第[28]题[Leedcode][JAVA][第101题][对称二叉树][队列][递归]
[问题描述][简单] 给定一个二叉树,检查它是否是镜像对称的.例如,二叉树 [1,2,2,3,4,4,3] 是对称的.1/ \2 2/ \ / \ 3 4 4 3 [解答思路] 1. 递归 时间复杂度 ...
最新文章
- 何恺明团队新作:只用普通ViT,不做分层设计也能搞定目标检测
- 在CentOS/Debian/Ubuntu上编译安装最新版 GCC 8 , cmake 3 和ninja
- Tornado写简易服务器
- C#连接mysql数据库的一个例子和获取本机IP的方法
- 图书馆座位预定管理系统前端设计_图书馆座位预约管理信息系统设计设计.doc...
- boost::geometry::for_each_coordinate用法的测试程序
- 【今晚七点】:对话余世兵——从OnVideo到快手云剪
- 常州彪马机器人_PUMA560型机器人
- Makefile学习资料及书籍推荐
- 蔡高厅老师 - 高等数学阅读笔记 - 05 - 导数和微分 - 01 (22、23、24、25、26、27)
- MakeGenericMethod Reflection 反射 ObjectToXmlT Generic XmlSerializer
- 处理 Exception 的几种实践,很优雅,已被很多团队采纳!
- python html5 便利店收银系统_便利店收银系统使用教程
- python中sys模块下载_python模块:sys模块
- Attribute特性定义及应用
- html文字自动放大缩小单位,如何css控制字体按百分比放大缩小
- 图形图像处理 —— 图像缩放算法
- git clone 修改配置 设置代理 加速
- Linux系统中CPU占用率过高问题原因分析
- 基于SU-03T语音模块的超声波拍照系统
热门文章
- LeetCode 1103. 分糖果 II
- spring手动回滚事务_Spring总结---gt;03
- php保存流文件到本地,php下载保存文件保存到本地的两种实现方法
- NeurIPS'20 | 通过文本压缩,让BERT支持长文本
- 工业解密:百度地图背后的路线时长预估模型!
- Android OOM案例分析
- Redis系列教程(一):Redis缓存的设计、性能、应用与数据集群同步
- 2019 最新阿里中间件Java 4轮面试题!60万年薪起步~
- 论文浅尝 | 利用多语言 wordnet 上随机游走实现双语 embeddings
- 容器中用uwsgi协议部署注意的问题以及用flask部署