Skip to content

Instantly share code, notes, and snippets.

@0001vrn
Created July 31, 2017 08:31
Show Gist options
  • Select an option

  • Save 0001vrn/ef55b4a0ae31c57a9fcf725ad1ce6d3d to your computer and use it in GitHub Desktop.

Select an option

Save 0001vrn/ef55b4a0ae31c57a9fcf725ad1ce6d3d to your computer and use it in GitHub Desktop.

Revisions

  1. 0001vrn created this gist Jul 31, 2017.
    54 changes: 54 additions & 0 deletions reverseWords.c
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,54 @@
    /*
    Given a String of length N reverse the words in it. Words are separated by dots.
    By : Varun Thakur
    Date : 31/07/2017
    */
    #include <stdio.h>

    void reverse(char *begin, char *end)
    {
    char temp;

    while (begin < end)
    {
    temp = *begin;
    *begin++ = *end;
    *end-- = temp;
    }
    }
    void reverseWords(char *s)
    {
    char *word_begin = s;
    char *temp = s;

    while(*temp)
    {
    temp++;

    if(*temp == '\0')
    {
    reverse(word_begin,temp-1);
    }
    else if(*temp == '.')
    {
    reverse(word_begin, temp-1);
    word_begin = temp+1;
    }
    }

    reverse(s,temp-1);


    }
    int main() {
    //code
    int t;scanf("%d",&t);
    while(t--){
    char s[20005];
    scanf("%s",&s);
    reverseWords(s);
    printf("%s\n",s);
    }
    return 0;
    }