一个 「开心字符串」定义为:仅包含小写字母 ['a', 'b', 'c'].
对所有在 1 到 s.length - 1 之间的 i ,满足 s[i] != s[i + 1] (字符串的下标从 1 开始)。
比方说,字符串 "abc","ac","b" 和 "abcbabcbcb" 都是开心字符串,但是 "aa","baa" 和 "ababbc" 都不是开心字符串。给你两个整数 n 和 k ,你需要将长度为 n 的所有开心字符串按字典序排序。请你返回排序后的第 k 个开心字符串,如果长度为 n 的开心字符串少于 k 个,那么请你返回 空字符串 。示例 1:输入:n = 1, k = 3
输出:"c"
解释:列表 ["a", "b", "c"] 包含了所有长度为 1 的开心字符串。按照字典序排序后第三个字符串为 "c" 。

代码

class Solution {ArrayList<Character> list=new ArrayList<>(){{add('a');add('b');add('c');}};ArrayList<String> strings=new ArrayList<>();public String getHappyString(int n, int k) {happyString(n,k,new StringBuilder());return   strings.size()<k?new String():strings.get(k-1);}public void happyString(int n, int k,StringBuilder stringBuilder) {if(strings.size()==k) return;//已经找够了字符串if(stringBuilder.length()==n)//长度够了{strings.add(stringBuilder.toString());return;}for(char c:list){if(stringBuilder.length()>0&&c==stringBuilder.charAt(stringBuilder.length()-1))
//满足条件                        continue;stringBuilder.append(c);happyString(n,k,stringBuilder);stringBuilder.deleteCharAt(stringBuilder.length()-1);//回溯}}
}

leetcode1415. 长度为 n 的开心字符串中字典序第 k 小的字符串(回溯)相关推荐

  1. 找出两个字符串中最长的相同子字符串

    //找出两个字符串中最长的相同子字符串public class Stringdemo {public static void main(String[] args) {String str1 = ne ...

  2. python统计字符在文件中出现的次数_python字符串中字符出现次数(python获取字符串个数)...

    今天要说的是Python的字符串函数还是很方便的,只需要调用 count() 方法即可. 最近,我在一个网站上看到了一个自然语言处理课程.我详细解释了一些方法的使用,用例很容易理解,所以我想通过我的博 ...

  3. php 正则 尖括号,php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符...

    PHP使用正则表达式提取字符串中尖括号<>.小括号().中括号[].大括号{}中的字符示例,需要的朋友可以参考下 代码如下: $str="你好(爱)[北京]{天安门}" ...

  4. Python统计一个字符串中所有字符在另一个字符串出现的总次数

    代码功能:统计一个字符串中所有字符在另一个字符串中出现的总次数. 技术要点:函数式编程. 可能的应用:垃圾邮件分类.在大部分垃圾邮件中,为了防止被分类为垃圾邮件,会在一些关键字中间插入类似于[.].* ...

  5. php 取字符串中的字母数字,php如何提取字符串中的数字?php提取字符串中数字的方法总结(附代码)...

    本篇文章给大家带来的内容是关于php如何提取字符串中的数字?php提取字符串中数字的方法总结(附代码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. PHP提取字符串中的第一组数字 ...

  6. 删除一个字符串中所有出现的给定子字符串

    删除一个字符串中所有出现的给定子字符串 给你两个字符串 s 和 part ,请你对 s 反复执行以下操作直到 所有 子字符串 part 都被删除: 找到 s 中 最左边 的子字符串 part ,并将它 ...

  7. 在数组中找到第 k 小的数

    在数组中找到第 k 小的数 [要求] 如果 arr 长度为 N,要求时间复杂度为 O(N),额外空间复杂度为 O(1). public static int[] getMinKNumByHeap(in ...

  8. 从2个有序数组中找第k小那个数

    系列文章目录 提示:AC==accepted,即LeetCode上提交代码通过,我刷题的代码用的是java,但是C++一个道理,算法思想一样,而且c++和java非常类似,python需要自己写,但是 ...

  9. python统计字符串个数_python字符串中字符出现次数(python获取字符串个数)

    原博文 2020-03-17 19:25 − 今天要说的是Python的字符串函数还是很方便的,只需要调用 count() 方法即可. 最近,我在一个网站上看到了一个自然语言处理课程.我详细解释了一些 ...

最新文章

  1. C/C++基础问题归集
  2. hudson linux节点,Linux 环境下搭建 Jenkins(Hudson)平台
  3. helloworld:一个完整的WCF案例
  4. apache图片cache容量_apache利用mod_cache缓存图片等
  5. 移动端日期选择插件rolldate
  6. puppet-dashboard安装及用apache和nginx进行管理
  7. Linux建立信任主机
  8. tp5 聚合max获取不到string最大值_深入理解Kafka客户端之如何获取集群元数据
  9. docker非常详细的介绍
  10. java 复杂表达式计算_我的计算器. 用java实现的. 可以支持复杂表达式
  11. 程序员实用算法 源码_程序员必须知道的十大基础实用算法综述
  12. 直流双闭环pwm调速系统matlab仿真,基于Matlab的双闭环PWM直流调速虚拟实验系统
  13. H3C模拟器安装及解决各种兼容性问题方法
  14. 三维地图之cesium轨迹回放(有代码)
  15. java具名参数_Spring JDBC 框架中, 绑定 SQL 参数的另一种选择:具名参数(named parameter)...
  16. fractions库的使用
  17. Yansongda\Pay 支付宝返回值封装
  18. 测量电压调节器输出纹波和开关瞬变的方法
  19. SpringBoot 微信点餐开源系统,值得一看
  20. Label mx条码标签打印软件生成跳号的流水号

热门文章

  1. 2020-12-15 CPU设计复盘
  2. 【计算机心理学】先设计再实现 在实现中完善设计
  3. 【C++ Primer | 16】容器适配器全特化、偏特化
  4. CPU和MMU(内存管理单元)
  5. 从草根到百万年薪程序员的十年风雨之路,吊打面试官系列!
  6. 北理工爬虫课程学习记录
  7. 远程拷贝代码 指定端口
  8. 父、子页面之间页面元素的获取,方法的调用
  9. bzoj3503: [Cqoi2014]和谐矩阵
  10. dialog像父activity传递参数