[关闭]
@zsh-o 2018-07-16T16:01:36.000000Z 字数 781 阅读 1458

句子反转

算法


句子反转单词不反转,用字符串反转来完成

  1. /*
  2. * 对一个句子进行反转,每个词不反转
  3. */
  4. #include <iostream>
  5. #include <stdio.h>
  6. #include <string.h>
  7. using namespace std;
  8. /*
  9. * 对一个字符串逆序
  10. */
  11. char* reverse_string(char* s, int size_s){
  12. char* r = new char[size_s];
  13. int i = 0;
  14. while(i < size_s){
  15. int j = size_s - 1 - i;
  16. r[i] = s[j];
  17. i++;
  18. }
  19. return r;
  20. }
  21. char* reverse_string_(char* s, int size_s){
  22. int i = 0;
  23. while(i < size_s/2){
  24. char a = s[i];
  25. int j = size_s - 1 - i;
  26. s[i] = s[j];
  27. s[j] = a;
  28. i++;
  29. }
  30. return s;
  31. }
  32. int main(){
  33. char* s = "abcdefg";
  34. printf("%s\n", reverse_string(s, strlen(s)));
  35. // printf("%s\n", reverse_string_(s, strlen(s))); // s定义在栈区无法赋值
  36. char a[] = "abcdefg";
  37. printf("%s\n", reverse_string(s, strlen(s)));
  38. printf("%s\n", reverse_string_(a, strlen(a)));
  39. char t[] = "abc def ghi"; //反转句子,单词不反转
  40. reverse_string_(t, strlen(t));
  41. int i = 0, j = 0;
  42. while(i <= strlen(t)){
  43. if(t[i] == ' ' || t[i] == '\0'){
  44. reverse_string_(t+j, i-j);
  45. j = i + 1;
  46. }
  47. i++;
  48. }
  49. printf("%s\n", t);
  50. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注