Consider an input string and reverse the alphabets in the string except the special characters in the string and print the string.
For example:
Consider the input string, s@t#!sh
The expected output is , h@s#!ts
As you can see, the special characters are in place without any change, whereas the alphabets in the string are reversed.
Input:
s@t#!sh
Output:
h@s#!ts
C Implementation:
Solution 1:
For example:
Consider the input string, s@t#!sh
The expected output is , h@s#!ts
As you can see, the special characters are in place without any change, whereas the alphabets in the string are reversed.
Input:
s@t#!sh
Output:
h@s#!ts
C Implementation:
Solution 1:
#include <stdio.h>
#include <string.h>
int main(void) {
 // to reverse a string
 char str[10000];
 char temp;
 int i = 0;
 int j;
 scanf("%s",str); // str = "sathish"
 j = strlen(str)-1;
 // h s i h t a s \0
 // 0 1 2 3 4 5 6 7
 while(i<j)
 {
  while(i<j && !(str[i]>='a' && str[i]<='z'))
   i++;
  while(i<j && !(str[j]>='a' && str[j]<='z'))
   j--;
  temp = str[i];
  str[i] = str[j];
  str[j] = temp;
  i++,j--;
 }
 printf("%s",str);
 return 0;
}
Solution 2:
#include <stdio.h>
#include <string.h>
int main()
{
 char str[10000];
 int i,j;
 char temp;
 i = 0;
 scanf("%s",str);
 j = strlen(str)-1;
 while(i<j)
 {
  if((str[i]>='a' && str[i]<='z') && (str[j]>='a' && str[j]<='z'))
  {
   temp = str[i];
   str[i] = str[j];
   str[j] = temp;
   i++,j--;
  }
  else
  {
   if(str[i]>='a' && str[i]<='z')
    j--; 
   else
    i++;
  }
 }
 printf("%s",str);
 return 0;
}