字符串的组合问题——返回字符串的所有不重复子序列
题目
你有一套字母卡片tiles,卡片上印有一个大写字母,这套卡片里可能有重复的字母。返回这套卡片可能排列的非空字母序列的数目。注意每张卡片只能用一次。
提示:
- 1 <= tiles.length <= 7
- tiles 由大写英文字母组成
输入描述:共一行,一个字符串
输出描述:共一行,一个整形数字,表示结果。
示例:
输入:AAB
输出:8
解释:存在8个满足题意的组合:A 、AA、AB、AAB、ABA、B、BA、BAA
题解
import java.util.*;public class Main{static HashSet<String> ans = new HashSet<>();static Set<String> result = new HashSet<>();public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.nextLine();char[] array = s.toCharArray();combiantion(array);System.out.println(ans.size());}public static void combiantion(char chs[]) {if (chs.length == 0) {return;}HashSet<String> hashSet = new HashSet<String>();Stack<Character> stack = new Stack<Character>();for (int i = 1; i <= chs.length; i++) {combine(chs, 0, i, stack, hashSet);}for (String s : hashSet) {String s1 = s.replace("[", "").replace("]", "").replace(",", "").replace(" ", "");List<String> permute = permutation(s1);ans.addAll(permute);}}public static void combine(char[] chs, int begin, int number, Stack<Character> stack, HashSet<String> hashSet) {String s = stack.toString();if (number == 0 && !hashSet.contains(s)) {hashSet.add(s);return;}if (begin == chs.length) {return;}stack.push(chs[begin]);combine(chs, begin + 1, number - 1, stack, hashSet);stack.pop();combine(chs, begin + 1, number, stack, hashSet);}public static ArrayList<String> permutation(String str) {if (str == null || str.length() < 1) {return new ArrayList();}boolean[] visited = new boolean[str.length()];process(str, "", visited);ArrayList<String> ans = new ArrayList<>(result);Collections.sort(ans);return ans;}private static void process(String s, String letter, boolean[] visted) {if (s.length() == letter.length()) {result.add(letter);return;}for (int i = 0; i < s.length(); i++) {char temp = s.charAt(i);if (visted[i]) {continue;}visted[i] = true;process(s, letter + String.valueOf(temp), visted);visted[i] = false;}}
}
代码参考:庄小焱
字符串的组合问题——返回字符串的所有不重复子序列相关推荐
- R语言str_subset函数和str_which函数:str_subset函数提取字符串向量中所有包含匹配字符的字符串、str_which函数返回字符串向量中所有包含匹配字符的位置(索引)
R语言str_subset函数和str_which函数:str_subset函数提取字符串向量中所有包含匹配字符的字符串.str_which函数返回字符串向量中所有包含匹配字符的位置(索引) 目录
- 数据转换字符串 查字符串出现次数 位置返回字符串和操作方法 2021-05-26
数组转换为字符串 1.toString() 2.join('任意符号') <!-- 查找字符串出现的次数 --> <script> var str = "wer ...
- python中input函数的返回是哪种类型_Python3.x中input的变化:input函数默认返回字符串类型...
背景:学习<Python基础教程第2版>,第10.3章 标准库:一些最爱 时, 运行如下例子: 用户选择投掷的骰子数以及每个骰子具有的面数,随机返回骰子的点数,代码如下: from ran ...
- php 转化js数组字符串,js数组怎么转为字符串
js数组转字符串的方法:1.使用toString()函数,语法"Array.toString()":2.使用join()函数,将数组元素连接起来以构建一个字符串,语法"a ...
- c替换指定位置字符串_【JavaScript】字符串
字符串 字符串可以是插入到引号中的任何字符.你可以使用单引号或双引号: var carname = "MI"; 可以使用索引位置来访问字符串中的每个字符: var characte ...
- java js对象转字符串数组_JS数组转字符串(3种方法)【转】
JavaScript 允许数组与字符串之间相互转换.其中 Array 方法对象定义了 3 个方法,可以把数组转换为字符串,如表所示. 数组方法 说明 toString() 将数组转换成一个字符串 to ...
- 检索数据_20_按照字符串数字组合的排序
按照字符串数字组合的排序 需求描述 需求:假设我们从雇员表emp里创建个视图,这里仅有一个字段,该字段叫data由员工名称和部门号拼接而成,我们想实现一个查询可以按照原来的部门编号逆序排序筛选出数据. ...
- php如何对 mysql 中text类型拆分存入一个数组_PHP递归实现无限级分类,可选返回字符串和数组...
正 文: 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是 ...
- python编写一个函数判断一个数是否为素数是则返回yes_编写函数isPrime,判断一个数字是否为素数,是则返回字符串 YES ,否则返回字符串 NO 。_学小易找答案...
[填空题]语句 x = (3,) 执行后x的值为_______________. [填空题]字典对象的___________方法可以获取指定"键"对应的"值", ...
最新文章
- KD-Tree复习笔记(BZOJ1941 BZOJ2648 BZOJ4066)
- 剑指offer-有序二维数组中的查找
- 第四范式亮相世界智能大会 共探智能发展下人才培养路径
- Pieczęć(模拟)
- 经典4大Python面试题!初级者,你所需知的(附标准答案)-上篇
- spring mvc 返回json数据的四种方式
- android数据的五种存储方式
- python自带的idle输入python_打开python自带IDLE出的问题
- 如何用c语言程序写一段英文字母,菜鸟求助,写一个随机输出26个英文字母的程序...
- 编写一个脚本,用它来操纵QTP的运行
- Netty如何解决粘包拆包?(二)
- 使用U盘制作纯dos系统
- 创新数据基础设施打通“数据”瓶颈,成就智慧院区建设
- 网页转化成pdf,网页转换图片,wkhtmltopdf,wkhtmltoimage使用小结
- 软件业:印度比中国强在哪
- NCURSES程序设计之拼图游戏
- 服务器显示无vga电缆怎么回事,无vga电缆是什么意思
- 服务器监控报警系统软件设计,Monitor监控报警系统
- Java回收对象的标记 和 对象的二次标记过程
- 计算机域名是什么域名?
热门文章
- Cauchy-Buniakowsky-Schwarz 积分形式证明
- 插入法构建Delaunay三角网
- C#编写Windows服务程序 (服务端),客户端使用 消息队列 实现淘宝 订单全链路效果
- (ICASSP 19)END-TO-END STREAMING KEYWORD SPOTTING
- MATLAB算法实战应用案例精讲-【智能优化算法】北方苍鹰优化算法(NGO) (附MATLAB代码实现)
- vue监听元素变化 不触发window.onresize
- 太原师范学院有没有计算机专业,太原师范学院
- Shell 编程之 sed 与 awk
- React:Redux 设计思想
- Python __doc__属性:查看文档