Given an input string str[], generate two output strings. One of which consists of those character which occurs only once in input string and second which consists of multi-time occurring characters. Output strings must be sorted.
Examples:
Input : str[] = "geeksforgeeks" Output : String with characters occurring once: for String with characters occurring multiple times: egks Input : str[] = "geekspractice" Output : String with characters occurring once: agikprst String with characters occurring multiple times: ce
Approach : We follow total two steps to generate the both output strings.
Step 1: Create a count array and count occurrences of characters in the given input string.
Step 2: Check count array for each position ‘i’ which leads to three possible conditions :
a) If count value is 1, append character in first output string.
b) If count value is greater than 1, append character in second output string.
c) If count value is 0 do nothing.
Time Complexity for above approach is O(n).
Auxiliary Space required is O(1).
// CPP program to print two strings // made of character occurring once // and multiple times #include <bits/stdc++.h> using namespace std;
const int MAX_CHAR = 256;
// function to print two strings // generated from single string one // with characters occurring once // other with character occurring // multiple of times void printDuo(string &str)
{ // initialize hashtable with zero
// entry
int countChar[MAX_CHAR] = { 0 };
// perform hashing for input string
int n = str.length();
for ( int i = 0; i < n; i++)
countChar[str[i] - 'a' ]++;
// generate string (str1) consisting
// char occurring once and string
// (str2) consisting char occurring
// multiple times
string str1 = "" , str2 = "" ;
for ( int i = 0; i < MAX_CHAR; i++) {
if (countChar[i] > 1)
str2 = str2 + ( char )(i + 'a' );
else if (countChar[i] == 1)
str1 = str1 + ( char )(i + 'a' );
}
// print both strings
cout << "String with characters occurring "
<< "once:\n" ;
cout << str1 << "\n" ;
cout << "String with characters occurring "
<< "multiple times:\n" ;
cout << str2 << "\n" ;
} // driver program int main()
{ string str = "lovetocode" ;
printDuo(str);
return 0;
} |
// Java program to print two strings // made of character occurring once // and multiple times class GFG {
final static int MAX_CHAR = 256 ;
// function to print two strings // generated from single string one // with characters occurring once // other with character occurring // multiple of times static void printDuo(String str) {
// initialize hashtable with zero
// entry
int countChar[] = new int [MAX_CHAR];
// perform hashing for input string
int n = str.length();
for ( int i = 0 ; i < n; i++) {
countChar[str.charAt(i) - 'a' ]++;
}
// generate string (str1) consisting
// char occurring once and string
// (str2) consisting char occurring
// multiple times
String str1 = "" , str2 = "" ;
for ( int i = 0 ; i < MAX_CHAR; i++) {
if (countChar[i] > 1 ) {
str2 = str2 + ( char ) (i + 'a' );
} else if (countChar[i] == 1 ) {
str1 = str1 + ( char ) (i + 'a' );
}
}
// print both strings
System.out.print( "String with characters occurring "
+ "once:\n" );
System.out.print(str1 + "\n" );
System.out.print( "String with characters occurring "
+ "multiple times:\n" );
System.out.print(str2 + "\n" );
System.out.print( "" );
}
// driver program public static void main(String[] args) {
String str = "lovetocode" ;
printDuo(str);
}
} //this code contributed by 29AJayKumar |
# Python3 program to print two strings # made of character occurring once # and multiple times MAX_CHAR = 256
# function to print two strings # generated from single string one # with characters occurring once # other with character occurring # multiple of times def printDuo(string):
# initialize hashtable with zero
# entry
countChar = [ 0 for i in range (MAX_CHAR)]
# perform hashing for input string
n = len (string)
for i in range (n):
countChar[ ord (string[i]) - ord ( 'a' )] + = 1
# generate string (str1) consisting
# char occurring once and string
# (str2) consisting char occurring
# multiple times
str1 = ""
str2 = ""
for i in range (MAX_CHAR):
if (countChar[i] > 1 ):
str2 = str2 + chr (i + ord ( 'a' ))
elif (countChar[i] = = 1 ):
str1 = str1 + chr (i + ord ( 'a' ))
# print both strings
print ( "String with characters occurring once:" ,
"\n" , str1)
print ( "String with characters occurring" ,
"multiple times:" , "\n" , str2)
# Driver Code string = "lovetocode"
printDuo(string) # This code is contributed by # Mohit kumar 29 |
// C# program to print two strings // made of character occurring once // and multiple times using System;
class GFG
{ static int MAX_CHAR = 256;
// function to print two strings // generated from single string one // with characters occurring once // other with character occurring // multiple of times static void printDuo( string str)
{ // initialize hashtable with zero
// entry
int [] countChar = new int [MAX_CHAR];
// perform hashing for input string
int n = str.Length;
for ( int i = 0; i < n; i++)
{
countChar[str[i] - 'a' ]++;
}
// generate string (str1) consisting
// char occurring once and string
// (str2) consisting char occurring
// multiple times
string str1 = "" , str2 = "" ;
for ( int i = 0; i < MAX_CHAR; i++)
{
if (countChar[i] > 1)
{
str2 = str2 + ( char ) (i + 'a' );
}
else if (countChar[i] == 1)
{
str1 = str1 + ( char ) (i + 'a' );
}
}
// print both strings
Console.Write( "String with characters " +
"occurring once:\n" );
Console.Write(str1 + "\n" );
Console.Write( "String with characters occurring " +
"multiple times:\n" );
Console.Write(str2 + "\n" );
Console.Write( "" );
} // Driver Code public static void Main()
{ string str = "lovetocode" ;
printDuo(str);
} } // This code is contributed by ita_c |
<script> // javascript program to print two strings // made of character occurring once // and multiple times var MAX_CHAR = 256;
// function to print two strings // generated from single string one // with characters occurring once // other with character occurring // multiple of times function printDuo(str)
{ // initialize hashtable with zero
// entry
var countChar = Array(MAX_CHAR).fill(0);
// perform hashing for input string
var n = str.length;
for ( var i = 0; i < n; i++)
countChar[str[i].charCodeAt(0) - 'a' .charCodeAt(0)]++;
// generate string (str1) consisting
// char occurring once and string
// (str2) consisting char occurring
// multiple times
var str1 = "" , str2 = "" ;
for ( var i = 0; i < MAX_CHAR; i++) {
if (countChar[i] > 1)
str2 = str2 + String.fromCharCode(i + 'a' .charCodeAt(0));
else if (countChar[i] == 1)
str1 = str1 + String.fromCharCode(i + 'a' .charCodeAt(0));
}
// print both strings
document.write( "String with characters occurring "
+ "once:<br>" );
document.write( str1 + "<br>" );
document.write( "String with characters occurring "
+ "multiple times:<br>" );
document.write( str2 + "<br>" );
} // driver program var str = "lovetocode" ;
printDuo(str); </script> |
Output:
String with characters occurring once: cdltv String with characters occurring multiple times: eo
Time complexity : O(n)
Auxiliary Space : O(1)