网站空间在那里买,房产集团公司网站建设方案,凭祥网站建设,网站开发有什么工作内容一个 「开心字符串」定义为#xff1a;仅包含小写字母 [a, b, c].
对所有在 1 到 s.length - 1 之间的 i #xff0c;满足 s[i] ! s[i 1] #xff08;字符串的下标从 1 开始#xff09;。
比方说#xff0c;字符串 abc#xff0c;ac#xff0c…一个 「开心字符串」定义为仅包含小写字母 [a, b, c].
对所有在 1 到 s.length - 1 之间的 i 满足 s[i] ! s[i 1] 字符串的下标从 1 开始。
比方说字符串 abcacb 和 abcbabcbcb 都是开心字符串但是 aabaa 和 ababbc 都不是开心字符串。给你两个整数 n 和 k 你需要将长度为 n 的所有开心字符串按字典序排序。请你返回排序后的第 k 个开心字符串如果长度为 n 的开心字符串少于 k 个那么请你返回 空字符串 。示例 1输入n 1, k 3
输出c
解释列表 [a, b, c] 包含了所有长度为 1 的开心字符串。按照字典序排序后第三个字符串为 c 。代码
class Solution {ArrayListCharacter listnew ArrayList(){{add(a);add(b);add(c);}};ArrayListString stringsnew 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()0cstringBuilder.charAt(stringBuilder.length()-1))
//满足条件 continue;stringBuilder.append(c);happyString(n,k,stringBuilder);stringBuilder.deleteCharAt(stringBuilder.length()-1);//回溯}}
}