Program to find k-th Lexicographical String from all Happy Strings of length n in Java
A happy string is a string that:
- consists only of letters of the set
['a', 'b', 'c']
. s[i] != s[i + 1]
for all values ofi
from1
tos.length - 1
(string is 1-indexed).
class MainProgram{ private String getHappyString(int n, int k) {
char[] arr = {'a', 'b', 'c'};
String res="";
List<String> list=new ArrayList<>();
generatePerm(arr, n, res, list);
if(list.size() >= k)
res=list.get(k-1);
return res;
}
private void generatePerm(char[] arr, int n, String res,
List<String> list){
if(n == 0){
list.add(res);
return;
}
for(int i=0; i<arr.length; i++){
if(res == "" || res.charAt(res.length()-1) != arr[i]){
String pre=res+arr[i];
generatePerm(arr, n-1, pre, list);
}
}
} public static void main(String args[]){
System.out.println("Happy String: "+getHappyString(3,4));
}
}
Output: Happy String: acb
Hope it helps, enjoy coding!
Any improvement or suggestions are welcomed !