Author Topic: [C] Reverse a string  (Read 1376 times)

0 Members and 1 Guest are viewing this topic.

Offline _moon

  • NULL
  • Posts: 8
  • Cookies: 1
    • View Profile
[C] Reverse a string
« on: January 12, 2012, 12:00:15 am »
I read an interesting article about Guerilla Interview this afternoon.. Which prompted me to check if I could still write some half-decent C, like reversing linked lists or detecting loops in a tree, as mentioned in this article.


That didn't go that well :] Anyway, at some point I stumbled upon a nice string reversing function. Some of you may find it interesting.


Code: [Select]
char* rev(char* str) {
        int end = strlen(str) - 1;
        int start = 0;

        while (start < end) {

                str[start] ^= str[end];
                str[end] ^= str[start];
                str[start] ^= str[end];

                ++start;
                --end;

        }

        return str;
}


The logic behind this being :
Quote
Let A = x and B = y.

 So,
 A = A XOR B
   then A = x XOR y
             B = y
 B = A XOR B
   then A = x XOR y
             B = (x XOR y) XOR y
                 = x XOR (y XOR y)
                 = x
 A = A XOR B
   then A = (x XOR y) XOR x
               = (y XOR x) XOR x
               = y XOR (x XOR x)
               = y

 now B = x and A = y

Source: http://discuss.fogcreek.com/techInterview/default.asp?cmd=show&ixPost=2077
All those moments will lost in time, like tears in rain.

Online Kulverstukas

  • Administrator
  • Zeus
  • *
  • Posts: 5161
  • Cookies: 405
  • Gender: Male
  • Motherflipper
    • View Profile
    • My blog
Re: [C] Reverse a string
« Reply #1 on: January 12, 2012, 12:31:54 am »
Code: Python
  1. someString = "123"
  2. print someString[::-1]
  3.  

heh :D

Offline xzid

  • Knight
  • **
  • Posts: 334
  • Cookies: 40
    • View Profile
Re: [C] Reverse a string
« Reply #2 on: January 12, 2012, 01:01:43 am »
Code: Python
  1. someString = "123"
  2. print someString[::-1]
  3.  

heh :D

This seems relevant:

http://codegolf.stackexchange.com/questions/2823/shortest-way-to-reverse-a-number/2826

I like the HTML solution, love reading codegolf.stackexchange

Offline _moon

  • NULL
  • Posts: 8
  • Cookies: 1
    • View Profile
Re: [C] Reverse a string
« Reply #3 on: January 13, 2012, 11:47:09 pm »
Thanks, nice topic.
All those moments will lost in time, like tears in rain.

 



Intern0t SoldierX SecurityOverride programisiai
Want to be here? Contact Ande, Bluechill or Kulverstukas on the forum or at IRC.