String with k distinct characters and no same characters adjacent
Given n and k, print a string that has n characters. The string should have exactly k distinct characters and no adjacent positions.
Examples:
Input : n = 5, k = 3
Output : abcab
Explanation: 3 distinct character a, b, c
and n length string.
Input: 3 2
Output: aba
Explanation: 2 distinct character 'a'
and 'b' and n length string.
Consider the first k Latin letters. We will add them to the answer in the order, firstly, we add a then b and so on. If letters are finished but the length of the answer is still less than the required ones, then we start again adding letters from the beginning of the alphabet. We repeat this process until the length of the answer becomes n and print it once done.
Below is the implementation of the above approach:
C++
#include <iostream>
using namespace std;
string findString( int n, int k)
{
string res = "" ;
for ( int i = 0; i < k; i++)
res = res + ( char )( 'a' + i);
int count = 0;
for ( int i = 0; i < n - k; i++) {
res = res + ( char )( 'a' + count);
count++;
if (count == k)
count = 0;
}
return res;
}
int main()
{
int n = 5, k = 2;
cout << findString(n, k);
return 0;
}
|
Java
import java.io.*;
public class GFG {
static String findString( int n, int k)
{
String res = "" ;
for ( int i = 0 ; i < k; i++)
res = res + ( char )( 'a' + i);
int count = 0 ;
for ( int i = 0 ; i < n - k; i++)
{
res = res + ( char )( 'a' + count);
count++;
if (count == k)
count = 0 ;
}
return res;
}
static public void main (String[] args)
{
int n = 5 , k = 2 ;
System.out.println(findString(n, k));
}
}
|
Python 3
def findString(n, k):
res = ""
for i in range (k):
res = res + chr ( ord ( 'a' ) + i)
count = 0
for i in range (n - k) :
res = res + chr ( ord ( 'a' ) + count)
count + = 1
if (count = = k):
count = 0 ;
return res
if __name__ = = "__main__" :
n = 5
k = 2
print (findString(n, k))
|
C#
using System;
public class GFG {
static string findString( int n, int k)
{
string res = "" ;
for ( int i = 0; i < k; i++)
res = res + ( char )( 'a' + i);
int count = 0;
for ( int i = 0; i < n - k; i++)
{
res = res + ( char )( 'a' + count);
count++;
if (count == k)
count = 0;
}
return res;
}
static public void Main ()
{
int n = 5, k = 2;
Console.WriteLine(findString(n, k));
}
}
|
PHP
<?php
function findString( $n , $k )
{
$res = "" ;
for ( $i = 0; $i < $k ; $i ++)
$res = $res . chr (ord( 'a' ) + $i );
$count = 0;
for ( $i = 0; $i < $n - $k ; $i ++)
{
$res = $res . chr (ord( 'a' )
+ $count );
$count ++;
if ( $count == $k )
$count = 0;
}
return $res ;
}
$n = 5;
$k = 2;
echo findString( $n , $k );
?>
|
Javascript
<script>
function findString(n, k)
{
let res = "" ;
for (let i = 0; i < k; i++)
res = res + String.fromCharCode( 'a' .charCodeAt(0) + i);
let count = 0;
for (let i = 0; i < n - k; i++)
{
res = res + String.fromCharCode( 'a' .charCodeAt(0) + count);
count++;
if (count == k)
count = 0;
}
return res;
}
let n = 5, k = 2;
document.write(findString(n, k));
</script>
|
Time complexity : O(n), where n is the given integer.
Auxiliary Space: O(n), where n is the given integer.
This article is contributed by Raja Vikramaditya.
Last Updated :
18 Sep, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...