Advertisement
Guest User

Untitled

a guest
Apr 20th, 2014
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. void reverseString(char string[],char *start, char* end)
  2. {
  3.  
  4. char tmp; //temporary variable to swap values
  5. int count = 0;
  6. while(start<end)
  7. {
  8. if(*start==' ')
  9. {
  10. printf("found space count %d n",count);
  11. reverseString(string,start-count,start);
  12. }
  13. tmp = *start;
  14. *start = *end;
  15. *end = tmp;
  16. *start++;
  17. *end--;
  18. count++;
  19. }
  20.  
  21. printf(" string %s n", string);
  22. }
  23.  
  24. int main()
  25. {
  26. char string[] = "reverse a string word by word";
  27. char *start =string;
  28. char *end =start+ strlen(string) -1;
  29. reverseString(string,start,end);
  30. return 0;
  31. }
  32.  
  33. #include <stdio.h>
  34. #include <string.h>
  35.  
  36. void stringrev(char *);
  37. void reverseWords(char *);
  38. void reverseString(char* , int);
  39.  
  40. int main()
  41. {
  42.  
  43. char string[] = "reverse a string word by word";
  44. reverseWords(string);
  45. printf("nWord-Wise Reversed String : %sn",string);
  46. stringrev(string);
  47. return 0;
  48.  
  49. }
  50.  
  51. void reverseWords(char * str)
  52. {
  53. int i = 0, j = 0;
  54. reverseString( str, strlen(str) );
  55. while( 1 ) // Loop forever
  56. {
  57. if( *(str+j) == ' ' || *(str+j) == '') // Found a word or reached the end of sentence
  58. {
  59. reverseString( str+i, j-i );
  60. i = j+1;
  61. }
  62. if( *(str+j) == '')
  63. {
  64. break;
  65. }
  66. j++;
  67. }
  68. }
  69.  
  70. void reverseString(char* str, int len)
  71. {
  72. int i, j;
  73. char temp;
  74. i=j=temp=0;
  75.  
  76. j=len-1;
  77. for (i=0; i<j; i++, j--)
  78. {
  79. temp=str[i];
  80. str[i]=str[j];
  81. str[j]=temp;
  82. }
  83. }
  84.  
  85. void stringrev(char *str)
  86. {
  87. int i=-1,j=0;
  88. char rev[50];
  89.  
  90. while(str[i++]!='');
  91.  
  92. while(i>=0)
  93. rev[j++] = str[i--];
  94.  
  95. rev[j]='';
  96.  
  97. printf("nComplete reverse of the string is : %sn",rev);
  98. }
  99.  
  100. void reverse_string_word(char *data)
  101. {
  102. char *saveptr;
  103. char *word;
  104. char *tmp = malloc(strlen(data) + 1);
  105. char *tmp2 = malloc(strlen(data) + 1);
  106.  
  107. *tmp = 0;
  108. *tmp2 = 0;
  109.  
  110. word = strtok_r(data, " ", &saveptr);
  111. if (word)
  112. {
  113. strcpy(tmp, word);
  114. }
  115. while (word)
  116. {
  117. word = strtok_r(NULL, " ", &saveptr);
  118. if (word)
  119. {
  120. sprintf(tmp2, "%s %s", word, tmp);
  121. strcpy(tmp, tmp2);
  122. }
  123. }
  124. strcpy(data, tmp);
  125. free(tmp);
  126. free(tmp2);
  127. }
  128.  
  129. "one two three four" is returned as "four three two one"
  130.  
  131. private void reverseWordsNoStackNoScanner(String str) {
  132. System.out.println("reverseWordsNoStackNoScanner "+str);
  133.  
  134. String[] buff = new String[str.length()];
  135. int end=str.length()-1;
  136. int j=end;
  137. int start=0;
  138. int ptr=0;
  139. for (int i=str.length()-1;i>=0;i--){
  140. boolean writeBuff=false;
  141. if (str.charAt(i)!=' ') { // have we backed up to a blank?
  142. j--; //no
  143. } else { //yes! write out this word
  144. writeBuff=true;
  145. }
  146. if (i==0) writeBuff=true; //are we done (position 0)?
  147.  
  148. if (writeBuff) { //time to write a word?
  149. //we've hit a delimiter (or we're done)
  150. ptr=j; //pointing at a blank or the beginning
  151. ptr++; //bump past the blank or the beginning
  152. while(ptr<=end){ //write the word from beginning to finish
  153. buff[start++]=String.valueOf(str.charAt(ptr++));
  154. }
  155. //don't write a blank when we are on the last word (past the end)
  156. if (i>0)buff[start++]=" ";
  157. j--;
  158. //set pointers for next iteration
  159. end=j; //back up end ptr to new 'end' - to parse the next word
  160. }
  161. }
  162. //print out our reversed word string
  163. for (String s: buff) {
  164. System.out.print(s);
  165. }
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement