C program for String Reversal | Samsung

Question
Write a C program for String Reversal. Print it in a reverse manner eliminating the repeated characters and spaces.
Logic
- Get the String from the user and reverse the string.
- Check for the repeated characters using checkRepeat function.
- If the element is already present skip that character or else store it in new array.
- If the element is empty space then skip that character.
- Print the new array.
Program
[code lang=”c”]
#include<stdio.h>
#include<string.h>
//C doesn’t support bool so we convert int as bool by using typedef
typedef int bool;
#define true 1
#define false 0
bool checkRepeat(char arr[],int find)
{
int i, len = strlen(arr);
bool flag = false;
for(i = 0; i< len ; i++)
{
if( find == arr[i])
{
flag = true; //Variable already present in array
printf("%d",i);
}
}
return flag;
}
int main()
{
char arr[20],arr2[20], ch;
bool flag;
gets(arr);
//don’t use scanf("%s",&arr) cuz it stops when encounter a space
int i,j,len = strlen(arr);
j = len-1;
/*Reversing the string*/
for(i = 0;i< len/2; i++)
{
ch = arr[i];
arr[i] = arr[j];
arr[j] = ch;
j–;
}
arr2[0] = arr[0];
j = 1;
for(i = 1; i<len; i++)
{
if(arr[i] == ‘ ‘)
continue; //Skip if space
flag = checkRepeat(arr2, arr[i]);
if(!flag) //If not a repeating variable
{
arr2[j] = arr[i];
j++;
}
}
printf("\n%s", arr2);
return 0;
}
[/code]
Analysis
Time complexity is O(n), here n is the length of the input.
Space complexity is O(n), here n is the length of the input.
You might also like…
To find the next greater element in an array