Also note that there is a similar question about reversing the words in a sentence, but still keeping the words in place. That is
I am a good boy
would become
boy good a am I
This is dealt with in another question. Here I only concentrate on reversing strings. That is
I am a good boy
would become
yob doog a ma I
Here are some sample C programs to do the same
Method1 (Recursive)
#include
static char str[]="STRING TO REVERSE";
int main(int argc, char *argv)
{
printf("\nOriginal string : [%s]", str);
// Call the recursion function
reverse(0);
printf("\nReversed string : [%s]", str);
return(0);
}
int reverse(int pos)
{
// Here I am calculating strlen(str) everytime.
// This can be avoided by doing this computation
// earlier and storing it somewhere for later use.
if(pos<(strlen(str)/2))
{
char ch;
// Swap str[pos] and str[strlen(str)-pos-1]
ch = str[pos];
str[pos]=str[strlen(str)-pos-1];
str[strlen(str)-pos-1]=ch;
// Now recurse!
reverse(pos+1);
}
}
Method2
#include
#include
#include
void ReverseStr ( char *buff, int start, int end )
{
char tmp ;
if ( start >= end )
{
printf ( "\n%s\n", buff );
return;
}
tmp = *(buff + start);
*(buff + start) = *(buff + end);
*(buff + end) = tmp ;
ReverseStr (buff, ++start, --end );
}
int main()
{
char buffer[]="This is Test";
ReverseStr(buffer,0,strlen(buffer)-1);
return 0;
}
Method3
public static String reverse(String s)
{
int N = s.length();
if (N <= 1) return s;
String left = s.substring(0, N/2);
String right = s.substring(N/2, N);
return reverse(right) + reverse(left);
}
Method4
for(int i = 0, j = reversed.Length - 1; i < j; i++, j--)
{
char temp = reversed[i];
reversed[i] = reversed[j];
reversed[j] = temp;
}
return new String(reversed);
Method5
public static String reverse(String s)
{
int N = s.length();
String reverse = "";
for (int i = 0; i < N; i++)
reverse = s.charAt(i) + reverse;
return reverse;
}
Method6
public static String reverse(String s)
{
int N = s.length();
char[] a = new char[N];
for (int i = 0; i < N; i++)
a[i] = s.charAt(N-i-1);
String reverse = new String(a);
return reverse;
}
Isn't that enough?
39 comments:
awesome work.. btw for application of reverse link list... it can be used to check if a string stored in link list char by char is palindrome or no.. so half list we traverse by reverse recursion and half normally n compare values... may b u can post this question as well...
thanks
char* strReverse(char* str)
{
int i=0, j=0;
while(str[j] != '\0')
j++;
j--;
while(i<=j){
char t = str[i];
str[i++] = str[j];
str[j--] = t;
}
return str;
}
I tried to work on this and found smallest code snippest to reverse a string as below:
#include
void rev ( char*, char* );
int main (int argc, char* argv[])
{
char buf[]="Sumeet C-Linux 1984";
char *end;
// In this end will traverse through whole sting and get pointer at end of sting.
for(end=buf; *end; end++);
rev(buf, end-1);
printf(" Reversed String : %s\n",buf);
return 0;
}
void rev (char *str, char *end)
{
char t;
while (str < end)
{
t = *str;
*str++ = *end;
*end-- = t;
}
}
sumeet@sumeetubuntupc:~/test-codes$ ./reverse_strg.o
Reversed String : 4891 xuniL-C teemuS
How about using a stack?
stack<char> tstack;
int i = 0;
while(str[i] != 0x0)
tstack.push(str[i++]);
i = 0;
while(i < tstack.size()+1)
{
str[i++] = tstack.top();
tstack.pop();
}
Hi guy. I am only I start to study c programs
c program tutorial.
I have visited a site http://program.v3host.be/?cat=204.
Much to our regret I have very little found out about it.
You can probably tell to me a good site about c programming.
I will be very glad.
Thansk
Greetings guy. I am only I start to study c program array.
I have visited a site http://program.v3host.be/?cat=204.
Much to our regret I have very little found out about it.
You can probably tell to me a good site about c program array.
I will be very glad.
Thansk
can u temme if the foll code is right..??
#include
#include
main()
{char a[10],b[10];
int l;
printf(""enter the string to be reversed");
scanf("%s",a);
l=strlen(a);
int i;
for(i=0;i<l;i++)
strcpy(b[i],a[l-i]);
printf("the reversed string is %s",b);
}
please help me..!
This is how it should look like
#include
#include
main()
{
char a[10],b[10];
int i;
int l;
printf("enter the string to be reversed");
scanf("%s",a);
l=strlen(a);
for(i=0;i<l;i++)
b[i] = a[l-1-i];
b[i] = '\0';
printf("the reversed string is %s",b);
system("PAUSE");
}
Hey you can try this. It works fine:
#include
#include
int main()
{
char str[10],newstr[10];
int length,i,k;
printf("enter your string to reverse>>");
scanf("%s",str);
length=(strlen(str)-1);
for(i=0;i<=length;i++)
{
newstr[i]=str[length-i];
}
newstr[length+1] = '\0';
k=strlen(newstr);
printf("\n Original String is: %s \n Reverse string is: %s",str,newstr);
printf("\n new string length is: %d",k);
getch();
return 0;
}
One more solution to reverse string
#include
#include
int main()
{
char str[50],newstr[50];
int length,i,k;
printf("enter the string>>");
scanf("%s",str);
length=(strlen(str)-1);
for(i=0,k=length;i<=length;i++,k--)
{
newstr[k]=str[i];
}
newstr[length+1] = '\0';
k=strlen(newstr);
printf("\n Original String is: %s \n Reverse string is: %s",str,newstr);
printf("\n new string length is: %d",k);
getch();
return 0;
}
strrev ???
tried one...
int
reverse(int pos)
{
int strl = strlen(str)-1,i;
int substrstart = 0,substrend = 0;
char temp;
for(;;)
{
if( pos <= strl/2){
temp = str[pos];
str[pos]= str[strl-pos];
str[strl-pos] = temp;
}
else
break;
pos++;
}
for(;substrend-1 <= strl;)
{
if(str[substrend] == ' ' || str[substrend] == '\0')
{
for(i = 0; i <= ((substrend-1) - substrstart)/2; i++)
{
temp = str[substrstart+i];
str[substrstart+i] = str[(substrend-1)-i];
str[(substrend-1)-i] = temp;
}
if(str[substrend] == '\0')
{
break;
}
substrstart=substrend+1;
}
substrend++;
}
return 0;
}
Thanks
Hi Guys... to post full prog ... previous of mine...
#include "stdio.h"
#include "stdlib.h"
char str[20]="Hi wise hungry boy";
int
reverse(int pos)
{
int strl = strlen(str)-1,i;
int substrstart = 0,substrend = 0;
char temp;
for(;;)
{
if( pos <= strl/2){
temp = str[pos];
str[pos]= str[strl-pos];
str[strl-pos] = temp;
}
else
break;
pos++;
}
for(;substrend-1 <= strl;)
{
if(str[substrend] == ' ' || str[substrend] == '\0')
{
for(i = 0; i <= ((substrend-1) - substrstart)/2; i++)
{
temp = str[substrstart+i];
str[substrstart+i] = str[(substrend-1)-i];
str[(substrend-1)-i] = temp;
}
if(str[substrend] == '\0')
{
break;
}
substrstart=substrend+1;
}
substrend++;
}
return 0;
}
void
main(int argc, char **argv)
{
printf("before string reverse: \n%s\n",str);
reverse(0);
printf("after string reverse: \n%s\n",str);
}
results below
before string reverse:
Hi wise hungry boy
after string reverse:
boy hungry wise Hi
Here is a small efficient way...
#include
#include
int main(void)
{
int i;
char str[50];
printf("Please enter a small sentence to be reversed: ");
fgets(str, sizeof(str), stdin);
//fgets adds a newline
//char at the end of the string.
for(i=strlen(str); i>-1; i--)
printf("%c", str[i]);
printf("\n");
return 0;
}
I'm considering performing a reverse mobile phone investigation by going online. I'm getting all of these calls by someone that I don't know and am concerned who they think they're contacting. All sorts of strange texting and messages are being left on my personal voice mail and its beginning to drive me insane. And so, exactly where can i locate these reverse cellphone lookup web sites?
Good Job!
Here is another nice post addressing the same question.
http://puddleofriddles.blogspot.com/2011/04/reverse-string.html
Hi
Another short crisp way to do would be something like this
void reverse(string &s)
{
size_t begin=0;
size_t end=s.length();
while(begin!=end && begin!=--end)
{
swap(s[begin++],s[end]);
}
}
thank you.......
thanks!
void StrReverse4(char *str)
{
if(*str)
{
StrReverse4(str+1);
putchar(*str);
}
}
#include
#include
main()
{
char str[50],revstr[50];
int i=0,j=0;
printf("Enter the string to be reversed : ");
scanf("%s",str);
for(i=strlen(str)-1;i>=0;i--)
{
revstr[j]=str[i];
j++;
}
revstr[j]='\0';
printf("Input String : %s",str);
printf("\nOutput String : %s",revstr);
getch();
}
hws it
here is the program in c to reverse the string using pointer
#include
#include
void main()
{
char str[]="rohit kumar singh";
char *p;
p=&str;
char *q;
q=p;
int s=strlen(str);
p=p+s;
while(p!=q-1)
{
printf("%c",*p);
p--;
}
printf("\n");
}
#include
void reverse(char *str)
{
if(*str !='\0')
{
reverse(str+1);
printf("%c",*str);
}
}
int main()
{
char s[]="i love u";
reverse(s);
return 0;
}
int index;
char *end;
char *start;
char temp;
void
revstr(char *start, char* end)
{
char temp;
if(start < end)
{
temp = *start;
*start = *end;
*end = temp;
revstr(++start, --end);
}
}
void
main()
{
char buf[]="Sumeet C-Linux 1984";
start=buf;
end = buf;
// to move the end to last
for ( end=start;*(end+1) != '\0';end++);
revstr(start, end);
printf("%s \n", buf);
}
good job... but y don't we use this simple method....?
char* ReverseString(char *src)
{
strrev(src);
return src;
}
Sample C Program To Accept A String & Display It.
Sample C Program To Find The Length Of A String.
Sample C Program To Concatenate Two Strings.
Sample C Program To Compare Two Strings.
Sample C Program To Swap Two Strings.
Sample C Program To Swap Two Strings Using strcpy() Function.
Sample C Program To Sort A Given Number Of Strings Using strcmp() Function.
Sample C Program To Check Whether A String Is Palindrome Or Not.
Sample C Program To Print The Reverse Of A String.
Sample C Program To Join Two Strings.
Sample C Program To Display Array Of Strings.
Sample C Program To Convert String To An Integer Using atoi() Function.
Sample C Program To Accept A String & Display In Reverse.
Sample C Program To Accept A String & Display Its Alternate Characters.
Sample C Program To Accept A String & Display Alternate Characters In Either Case.
i m not getting corect output for the following. i m geting reverse + some other characters. i dont know why. please explain me!!!
#include
#include
char * reverse(char *s)
{
int j=strlen(s)-1,i=0;
char *t="";
printf("string = ");
puts(s);
while(j>=0)
{
t[i++]=s[j--];
}
printf("reverse = ");
puts(t);
return t;
}
void main()
{
char *s1,*s2;
clrscr();
printf("Enter a string\n");
gets(s1);
printf("string = ");
puts(s1);
strcpy(s2,reverse(s1));
printf("reverse = ");
puts(s2);
getch();
}
How the first method (recursive) works?
How method 1 (recursive) works?
A nice article to reverse is at http://www.ritambhara.in/recursive-function-to-reverse-a-string/
thanxs guyz
continuously i used to read smaller content that as well clear their
motive, and that is also happening with this piece of writing which I am reading now.
Visit my web site - diets that work
What a data of un-ambiguity and preserveness of
valuable familiarity about unpredicted feelings.
my homepage calculate waist to Height ratio
Ηelpful info. Luсkу me I founԁ your sіte by аccіdent, and I аm surpгiѕeԁ why this accіdеnt ԁid nοt took place
in аdvance! I bookmarked it.
My blog post: abrir cuenta facebook
I’m not that much оf a online reаdеr to be honest but your sites rеally niсe, keep it up!
I'll go ahead and bookmark your website to come back in the future. All the best
Also visit my webpage - facebook cuenta gratis
Wοw, this poѕt iѕ good, my younger sister іs
analyzing thеse things, thus I am going to tell
heг.
My websіte; www.ihma.in
Appreciation for nice Updates, I found something new and folks can get useful info about BEST ONLINE TRAINING
Post a Comment