String reverse with time complexity of n/2 with out using
temporary variable.
Answers were Sorted based on User's Feedback
Answer / gayathri sundar
#include<stdio.h>
#include<string.h>
main(int argc, char *argv[])
{
char *string = argv[1];
int len = strlen(string);
int i = 0;
int j = len - 1;
printf("string before is %s\n", string);
printf("len is %d\n", len);
while(i <= j)
{
*(string+i) += *(string+j);
*(string+j) = *(string+i) - *(string+j);
*(string+i) = *(string+i) - *(string+j);
i++;
j--;
if(len % 2)
if(i == j) break;
}
printf("reversed string is %s\n", string);
}
| Is This Answer Correct ? | 9 Yes | 3 No |
Answer / manish pathak
//********this is perfect answer***************
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,n,num,rem,l;
char s[]="abcde";
l=sizeof(s)-1;
for(i=0,j=l-1;i<=(l-1)/2;i++)//save space n/2
{
s[i]=s[i]+s[j-i];
s[j-i]=s[i]-s[j-i];
s[i]=s[i]-s[j-i];
}
s[l]='\0';
printf("%s",s);
getch();
}
| Is This Answer Correct ? | 5 Yes | 1 No |
Answer / a
It's all O(n). You're finding the length of the string,
which itself is an O(n) operation.
So, O(n + n/2) = O(n).
| Is This Answer Correct ? | 4 Yes | 1 No |
Answer / mm chen
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;
using std::cin;
int main()
{
string s("abcdefghijklmnopqrstuvwxyz");
string::size_type s_size = s.size();
for (string::size_type x = 0; x != s_size; x++){
if ( (s_size -x -1) > x ){
s[x] ^= s[s_size - x -1];
s[s_size - x -1] ^= s[x];
s[x] ^= s[s_size - x -1];
}else{
break;
}
}
cout << s << endl;
}
| Is This Answer Correct ? | 3 Yes | 0 No |
Answer / anurag
int i=0,len=strlen(str);
int j=len/2;len--;
while(i<j)
{
*(str+i)^=*(str+len)^=*(str+i)^=*(str+len);
len--;i++;
}
| Is This Answer Correct ? | 3 Yes | 1 No |
Answer / atul kabra
#include<stdio.h>
void reverse(char *);
void main()
{
char str[]="Hello";
reverse(str);
printf("Reverse String is %s",str);
}
void reverse(char *p)
{
char *q=p;
while(*++q!='\0');
q--;
while(p<q)
{
*p=*p+*q;
*q=*p-*q;
*p=*p-*q;
p++;
q--;
}
}
| Is This Answer Correct ? | 3 Yes | 3 No |
Answer / suraj bhan gupta
#inclue<stdio.h>
#include<string.h>
main(){
char a[10],i;
int len=1;
printf(" Enter string ");
fgets(a,9,stdin);
len = strlen(a);
for(i=0 ; i<(len/2) ; i++){
a[i]=a[i]+a[len-2];
a[len-2]=a[i]-a[len-2];
a[i]=a[i]-a[len-2];
len--;
}
printf("\n Reverse string with n/2 complexity
%s",a);
return 0;
}
| Is This Answer Correct ? | 2 Yes | 2 No |
Answer / snehal
#inclue<stdio.h>
#include<string.h>
main(){
char a[10],i;
int len=1;
printf(" Enter string ");
fgets(a,9,stdin);
len = strlen(a);
for(i=0 ; i<=(len/2) ; i++){
a[i]=a[i]+a[len-1];
a[len-1]=a[i]-a[len-1];
a[i]=a[i]-a[len-1];
len--;
}
printf("\n Reverse string with n/2 complexity
%s",a);
return 0;
}
| Is This Answer Correct ? | 1 Yes | 1 No |
#include<iostream.h>
#include<string.h>//complexity-n/2
int main()
{
int i,l,l1;
char str[100];
cout<<"enter string:";
gets(str);
l=strlen(str);
if(l%2==0)
l1=(l/2-1);
else
l1=l/2;
for(i=0;i<=l1;i++)/*swap elements from 2 ends till u reach
middle part of array*/
{
char t=str[i];
str[i]=str[l-i-1];
str[l-i-1]=t;
}
str[l]=0;
cout<<"\n\nreversed string is:"<<str;
getch();
return 0;
}
| Is This Answer Correct ? | 2 Yes | 11 No |
Write a C program to print look and say sequence? For example if u get the input as 1 then the sequence is 11 21 1211 111221 312211 12112221 .......(it counts the no. of 1s,2s etc which is in successive order) and this sequence is used in run-length encoding.
struct Foo { char *pName; char *pAddress; }; main() { struct Foo *obj = malloc(sizeof(struct Foo)); clrscr(); obj->pName = malloc(100); obj->pAddress = malloc(100); strcpy(obj->pName,"Your Name"); strcpy(obj->pAddress, "Your Address"); free(obj); printf("%s", obj->pName); printf("%s", obj->pAddress); } a. Your Name, Your Address b. Your Address, Your Address c. Your Name Your Name d. None of the above
main() { int c[ ]={2.8,3.4,4,6.7,5}; int j,*p=c,*q=c; for(j=0;j<5;j++) { printf(" %d ",*c); ++q; } for(j=0;j<5;j++){ printf(" %d ",*p); ++p; } }
write a program to count the number the same (letter/character foreg: 's') in a given sentence.
main() { int a=10,*j; void *k; j=k=&a; j++; k++; printf("\n %u %u ",j,k); }
Program to Delete an element from a doubly linked list.
4 Answers College School Exams Tests, Infosys,
#include<conio.h> main() { int x,y=2,z,a; if(x=y%2) z=2; a=2; printf("%d %d ",z,x); }
how many processes will gate created execution of -------- fork(); fork(); fork(); -------- Please Explain... Thanks in advance..!
How to use power function under linux environment.eg : for(i=1;i<=n;i++){ pow(-1,i-1)} since it alerts undefined reference to 'pow'.
find simple interest & compund interest
Ramesh’s basic salary is input through the keyboard. His dearness allowance is 40% of basic salary, and house rent allowance is 20% of basic salary. Write a program to calculate his gross salary.
main() { int c = 5; printf("%d", main||c); } a. 1 b. 5 c. 0 d. none of the above