Qualcomm Interview Question
Software Engineer / DevelopersNo temporary memory needed,
char* reverse(char* str)
{
int i=0,len=strlen(str);
while(i<len/2)
{
str[i]=str[i]+str[len-i-1];
str[len-i-1]=str[i]-str[len-i-1];
str[i]=str[i]-str[len-i-1];
i++;
}
std::cout<<str;
return str;
}
void main()
{
char s[12]= "hello world";
reverse(s);
}
#include <stdio.h>
#include <string.h>
void reverseString(char *str);
void reverseString(char *str){
int len=0;
if (!str || (len=strlen(str))<2)
return;
int i;
for(i=0; i<len>>1; i++)
{
str[i]=str[i]+str[len-1-i];
str[len-1-i]=str[i]-str[len-1-i];
str[i]=str[i]-str[len-1-i];
}
}
int main (int argc, const char * argv[]) {
char str1[100]={0};
char str2[100]={0};
strcpy(str1, "Hello World");
strcpy(str2, str1);
reverseString(str1);
printf("in:%s\t\t out:%s\n", str2, str1);
strcpy(str1, "abc");
strcpy(str2, str1);
reverseString(str1);
printf("in:%s\t\t out:%s\n", str2, str1);
strcpy(str1, "ab");
strcpy(str2, str1);
reverseString(str1);
printf("in:%s\t\t out:%s\n", str2, str1);
//strcpy(str1, NULL);
//strcpy(str2, str1);
reverseString(NULL);
printf("in:%s\t\t out:%s\n", NULL, NULL);
strcpy(str1, "a");
strcpy(str2, str1);
reverseString(str1);
printf("in:%s\t\t out:%s\n", str2, str1);
return 0;
}
#include <stdio.h>
#include <string.h>
void reverseString(char *str);
void reverseString(char *str){
int len=0;
if (!str || (len=strlen(str))<2)
return;
int i;
for(i=0; i<len>>1; i++)
{
str[i]=str[i]+str[len-1-i];
str[len-1-i]=str[i]-str[len-1-i];
str[i]=str[i]-str[len-1-i];
}
}
int main (int argc, const char * argv[]) {
char str1[100]={0};
char str2[100]={0};
strcpy(str1, "Hello World");
strcpy(str2, str1);
reverseString(str1);
printf("in:%s\t\t out:%s\n", str2, str1);
strcpy(str1, "abc");
strcpy(str2, str1);
reverseString(str1);
printf("in:%s\t\t out:%s\n", str2, str1);
strcpy(str1, "ab");
strcpy(str2, str1);
reverseString(str1);
printf("in:%s\t\t out:%s\n", str2, str1);
//strcpy(str1, NULL);
//strcpy(str2, str1);
reverseString(NULL);
printf("in:%s\t\t out:%s\n", NULL, NULL);
strcpy(str1, "a");
strcpy(str2, str1);
reverseString(str1);
printf("in:%s\t\t out:%s\n", str2, str1);
return 0;
}
One of many possible implementations.
- Michael September 20, 2009