题目

你有一套字母卡片tiles,卡片上印有一个大写字母,这套卡片里可能有重复的字母。返回这套卡片可能排列的非空字母序列的数目。注意每张卡片只能用一次。
提示:

  1. 1 <= tiles.length <= 7
  2. 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;}}
}

代码参考:庄小焱

字符串的组合问题——返回字符串的所有不重复子序列相关推荐

  1. R语言str_subset函数和str_which函数:str_subset函数提取字符串向量中所有包含匹配字符的字符串、str_which函数返回字符串向量中所有包含匹配字符的位置(索引)

    R语言str_subset函数和str_which函数:str_subset函数提取字符串向量中所有包含匹配字符的字符串.str_which函数返回字符串向量中所有包含匹配字符的位置(索引) 目录

  2. 数据转换字符串 查字符串出现次数 位置返回字符串和操作方法 2021-05-26

    数组转换为字符串 1.toString()    2.join('任意符号') <!-- 查找字符串出现的次数 --> <script> var str = "wer ...

  3. python中input函数的返回是哪种类型_Python3.x中input的变化:input函数默认返回字符串类型...

    背景:学习<Python基础教程第2版>,第10.3章 标准库:一些最爱 时, 运行如下例子: 用户选择投掷的骰子数以及每个骰子具有的面数,随机返回骰子的点数,代码如下: from ran ...

  4. php 转化js数组字符串,js数组怎么转为字符串

    js数组转字符串的方法:1.使用toString()函数,语法"Array.toString()":2.使用join()函数,将数组元素连接起来以构建一个字符串,语法"a ...

  5. c替换指定位置字符串_【JavaScript】字符串

    字符串 字符串可以是插入到引号中的任何字符.你可以使用单引号或双引号: var carname = "MI"; 可以使用索引位置来访问字符串中的每个字符: var characte ...

  6. java js对象转字符串数组_JS数组转字符串(3种方法)【转】

    JavaScript 允许数组与字符串之间相互转换.其中 Array 方法对象定义了 3 个方法,可以把数组转换为字符串,如表所示. 数组方法 说明 toString() 将数组转换成一个字符串 to ...

  7. 检索数据_20_按照字符串数字组合的排序

    按照字符串数字组合的排序 需求描述 需求:假设我们从雇员表emp里创建个视图,这里仅有一个字段,该字段叫data由员工名称和部门号拼接而成,我们想实现一个查询可以按照原来的部门编号逆序排序筛选出数据. ...

  8. php如何对 mysql 中text类型拆分存入一个数组_PHP递归实现无限级分类,可选返回字符串和数组...

    正 文: 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是 ...

  9. python编写一个函数判断一个数是否为素数是则返回yes_编写函数isPrime,判断一个数字是否为素数,是则返回字符串 YES ,否则返回字符串 NO 。_学小易找答案...

    [填空题]语句 x = (3,) 执行后x的值为_______________. [填空题]字典对象的___________方法可以获取指定"键"对应的"值", ...

最新文章

  1. KD-Tree复习笔记(BZOJ1941 BZOJ2648 BZOJ4066)
  2. 剑指offer-有序二维数组中的查找
  3. 第四范式亮相世界智能大会 共探智能发展下人才培养路径
  4. Pieczęć(模拟)
  5. 经典4大Python面试题!初级者,你所需知的(附标准答案)-上篇
  6. spring mvc 返回json数据的四种方式
  7. android数据的五种存储方式
  8. python自带的idle输入python_打开python自带IDLE出的问题
  9. 如何用c语言程序写一段英文字母,菜鸟求助,写一个随机输出26个英文字母的程序...
  10. 编写一个脚本,用它来操纵QTP的运行
  11. Netty如何解决粘包拆包?(二)
  12. 使用U盘制作纯dos系统
  13. 创新数据基础设施打通“数据”瓶颈,成就智慧院区建设
  14. 网页转化成pdf,网页转换图片,wkhtmltopdf,wkhtmltoimage使用小结
  15. 软件业:印度比中国强在哪
  16. NCURSES程序设计之拼图游戏
  17. 服务器显示无vga电缆怎么回事,无vga电缆是什么意思
  18. 服务器监控报警系统软件设计,Monitor监控报警系统
  19. Java回收对象的标记 和 对象的二次标记过程
  20. 计算机域名是什么域名?

热门文章

  1. Cauchy-Buniakowsky-Schwarz 积分形式证明
  2. 插入法构建Delaunay三角网
  3. C#编写Windows服务程序 (服务端),客户端使用 消息队列 实现淘宝 订单全链路效果
  4. (ICASSP 19)END-TO-END STREAMING KEYWORD SPOTTING
  5. MATLAB算法实战应用案例精讲-【智能优化算法】北方苍鹰优化算法(NGO) (附MATLAB代码实现)
  6. vue监听元素变化 不触发window.onresize
  7. 太原师范学院有没有计算机专业,太原师范学院
  8. Shell 编程之 sed 与 awk
  9. React:Redux 设计思想
  10. Python __doc__属性:查看文档