LeetCode 开心字符串
题目描述
一个 「开心字符串」定义为:仅包含小写字母 [‘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" 。
示例 2:
输入:n = 1, k = 4
输出:""
解释:长度为 1 的开心字符串只有 3 个。
示例 3:
输入:n = 3, k = 9
输出:"cab"
解释:长度为 3 的开心字符串总共有 12 个 ["aba", "abc",
"aca", "acb", "bab", "bac", "bca", "bcb", "cab", "cac", "cba",
"cbc"] 。第 9 个字符串为 "cab"
示例 4:
输入:n = 2, k = 7 输出:""
1. 示例 5:
输入:n = 10, k = 100 输出:"abacbabacb"
解题思路: 利用回溯法求出所有的开心字符串保存到 List 中,在遍历求取所有的开心字符串的时候List已经按照字典序存放.
代码:
class Solution {private String[] sAbc = new String[]{"a","b","c"};private List<String> list = new LinkedList<String>();public String getHappyString(int n, int k) {if(n==1 && k>3){return "";}String s = "";dfs(s,n);return list.size()<k?"":list.get(k-1);}public void dfs(String s,int n){if(s.length()==n){list.add(s);return;}for(int i = 0;i<3;i++){if(s.equals("")){s+=sAbc[i];dfs(s,n);s=s.substring(0,s.length()-1);}else if(!s.substring(s.length()-1).equals(sAbc[i])){s+=sAbc[i];dfs(s,n);s=s.substring(0,s.length()-1);}}}
}
LeetCode 开心字符串相关推荐
- leetcode1415. 长度为 n 的开心字符串中字典序第 k 小的字符串(回溯)
一个 「开心字符串」定义为:仅包含小写字母 ['a', 'b', 'c']. 对所有在 1 到 s.length - 1 之间的 i ,满足 s[i] != s[i + 1] (字符串的下标从 1 开 ...
- LeetCode 43. 字符串相乘(大数乘法)
文章目录 1. 题目 2. 小学竖式乘法 2.1 普通版 2.2 优化版 1. 题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示 ...
- 51 -leetcode 38 -字符串
// LeetCode 38 字符串 to_string int to string char 直接变为string //边界情况 for int i=0 i<.size() 比较的活 i+1 ...
- [DFA|有限状态机] leetcode 8 字符串转换整数(atoi)
[DFA|有限状态机] leetcode 8 字符串转换整数(atoi) 1.题目 题目链接 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符, ...
- 弟中弟的Leetcode总结——字符串类(一)
弟中弟的Leetcode总结--字符串类(一) 题目描述 Longest Substring Given a string, find the length of the longest substr ...
- ⭐算法入门⭐《模拟》中等01 —— LeetCode 8. 字符串转换整数
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 实现一个myAtoi( ...
- c++ 32位有符号的整数_【LeetCode】字符串分类字符串转换整数 (atoi)
" 摘要:本文主要讲述LeetCode字符串分类字符串转换整数 (atoi)解法.主要内容如下: 题目 示例 解题 " 01 - 题目 请你来实现一个 atoi 函数,使其能将字符 ...
- 32位有符号整数_[LeetCode] 8. 字符串转换整数 (atoi)
题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...
- leetcode 387. 字符串中的第一个唯一字符(hash)
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 示例: s = "leetcode" 返回 0 s = "loveleetcode ...
最新文章
- Hadoop + MapReduce 端口自定义配置
- 如何处理win10系统内置Linux系统闪退问题
- 51nod挑的部分5级题
- 新建文件夹html文件,JS实现新建文件夹功能
- mysql 表中添加唯一约束
- CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录
- win10子系统linux编译ffmpeg
- 三款最安全的Linux操作系统(适合从事网络安全工作者使用)
- 常见电容器图片_工业机器视觉的常见应用与施努卡VisionMax视觉系统介绍
- JavaScript中函数式编程的原理
- java给byte赋值_关于JAVA中Byte数据类型二进制赋值运算报错问题
- 关于网站速度优化的一点建议
- 根据奖品权重计算中奖概率实现抽奖的方法
- 如何让PPT给你的presentation加分
- Android Studio 按钮样式实现
- 社会信用编码的验证(18位)
- AngelScript -- C++程序最好的脚本语言
- 线性与非线性规划:随机方向法
- sql实现查询学习了所有课程的学生信息
- java使用world模板动态生成PDF文件
热门文章
- ultra fast lane detection数据集制作
- 原创|智能交通2022第十六届北京国际数字交通展览会
- 【蓝旭】第五周预习博客
- web前端就业怎么样
- 怎么复制cmd显示的内容?怎么把外面的东西复制到cmd里面?
- 用计算机发传真,怎么使用win7电脑发传真|使用win7电脑发传真的详细步骤
- 【UE4教程】Unreal 4.22 UI显示指定物体-实时渲染
- linux 编译符号 u,Linux下缩小可执行程序 (一) 非使用符号的去除
- 号称下一代消息中间件!来看看它有多牛逼
- 50TB ExaDrive SSD投入商用,EB级容量闪存系统来日可期