可参考本博客回溯法专栏的最后一条的回溯法框架

https://blog.csdn.net/qq_41901915/article/details/104113330

执行结果:

通过

显示详情

执行用时 :1 ms, 在所有 Java 提交中击败了100.00% 的用户

内存消耗 :34.1 MB, 在所有 Java 提交中击败了72.33%的用户

题目:

你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。

示例 1:

输入:"AAB"
输出:8
解释:可能的序列为 "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA"。

示例 2:

输入:"AAABBC"
输出:188

提示:

1 <= tiles.length <= 7
    tiles 由大写英文字母组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-tile-possibilities
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

采用回溯法,利用框架就可以了,关键在于如何去重

代码:

class Solution {int result=0;public int numTilePossibilities(String tiles) {char[] ch=tiles.toCharArray();Arrays.sort(ch);boolean[] visit=new boolean[ch.length];backtrack(visit,ch);return result;}public void backtrack(boolean[] visit,char[] ch){for(int i=0;i<ch.length;i++){//这是这个代码核心的部分//选过一次的一定不会再选了//如果与前面一个字母相同,且它已经回退过了,说明它已经选完了if(visit[i]||(i>0&&ch[i]==ch[i-1]&&!visit[i-1])){continue;}result++;visit[i]=true;backtrack(visit,ch);visit[i]=false;}}
}

Leetcode刷题java之1079. 活字印刷相关推荐

  1. leetcode刷题java、c++、go语言三合一版本 谷歌师兄的刷题笔记、东哥的算法小抄、 Guide哥的Java面试突击版

    不久前火爆 GitHub 的 LeetCode 中文刷题手册,分享给大家,让正在找工作的朋友能够快速找到心仪的offer! <LeetCode Cookbook>目前已经收录了 520 道 ...

  2. Leetcode刷题java之3. 无重复字符的最长子串

    执行结果: 通过 显示详情 执行用时 :13 ms, 在所有 Java 提交中击败了49.96% 的用户 内存消耗 :37.5 MB, 在所有 Java 提交中击败了36.47%的用户 题目: 给定一 ...

  3. Leetcode刷题java之121买股票的最佳时机

    题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票 ...

  4. LeetCode刷题Java——88.合并两个有序数组(简单)

    题目 给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目. 请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列. ...

  5. Leetcode刷题第1题:两数之和(基于Java语言)

    ** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...

  6. Leetcode刷题 463题:岛屿的周长(基于Java语言)

    ** Leetcode刷题 463题:岛屿的周长(基于Java语言) ** 一. 题目描述: 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相 ...

  7. Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言)

    ** Leetcode刷题 225题:用队列实现栈(基于Java和c++两种语言) ** 题目: 使用队列实现栈的下列操作: push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top( ...

  8. LeetCode刷题(十)----数组-----medium部分(Java、C++)

    LeetCode刷题(十)-----数组-------medium部分(Java.C++) 238. 除自身以外数组的乘积 给定长度为n的整数数组nums,其中n>1,返回输出数组output, ...

  9. LeetCode刷题记录12——232. Implement Queue using Stacks(easy)

    LeetCode刷题记录12--232. Implement Queue using Stacks(easy) 目录 LeetCode刷题记录12--232. Implement Queue usin ...

最新文章

  1. 脑神经计算建模揭示前额叶皮层不同类型中间神经元在信息维持中的作用
  2. python函数代码的复用_Python__函数和代码复用
  3. details和summary标签
  4. 未来不是计算机发展的方向,未来人类的方向,或许不是人工智能,而是智能人类...
  5. linux怎么添加工作组,linux 用户与工作组
  6. 合并两个有序数组(双/三指针)
  7. ubuntu 安装 php
  8. 定制一个winCE5.0操作系统
  9. 关于用Linux桌面版当工作系统这件事
  10. 寻找固定的和----2013年2月26日
  11. Linux -lvm -扩容、缩容逻辑卷(针对xfs)
  12. 标签打印软件如何批量打印可变内容
  13. mysql strict_mysql 严格模式 Strict Mode说明
  14. cheeta(cheetah mobile官方)
  15. 【Hyperledger Fabric】学习笔记1—— 区块链介绍
  16. 全球首发!惯性导航导论(剑桥大学)第三部分
  17. 日常生活中使用的台式计算机,台式电脑鼠标不动应该怎么办
  18. 【XSY2708】hack 网络流
  19. Algorithm:数学建模大赛(CUMCM/NPMCM)之数学建模(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建
  20. 项目实战:Qt+Android模拟操作器(模拟操作app,打开,点击,输入,获取验证码等等)

热门文章

  1. php 生成8位数唯一的激活码
  2. Python学习笔记:个税起征点上调至5000,算一算少交多少税?
  3. linux查看磁盘使用情况命令
  4. 用Python实现DT算法
  5. svnsync: Failed to get lock on destination repos, currently held by 'localhost.localdomain
  6. 2019国赛C题优秀论文机场的出租车问题
  7. 多线程:转载自-时光如水_岁月如哥
  8. 数字孪生系统有哪些意义?
  9. java中设置基偶隔行换色_隔行变色 - 李俊互联网技术传播者 - 博客园
  10. 打包aab_聚餐买单AA制已经过时了 AAB制、AABB制、BBK制,你选哪个?