一句话单词倒置

前端之家收集整理的这篇文章主要介绍了一句话单词倒置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. 两种方式,第一,通过指针;第二,通过数组下标
  1. void LoopMove(char * l,char * r)
  2. {
  3. char temp;
  4. while(l<r)
  5. {
  6. temp = *l;
  7. *l = *r;
  8. *r = temp;
  9. ++l;
  10. --r;
  11. }
  12. }
  13.  
  14. void ReverseStr(char * str)
  15. {
  16. char *l,*r;
  17. r = str;
  18. l = str;
  19. LoopMove(l,r+strlen(str)-1);
  20. while(*r!='\0')
  21. {
  22. l = r+1;
  23. r = l;
  24. while(*r!=' ' && *r!='\0')
  25. ++r;
  26. r = r-1;
  27. LoopMove(l,r);
  28. l = r+1;
  29. r = l;
  30. }
  31. }
  32.  
  33. int main()
  34. {
  35. char str[]="i come from tianjin.";
  36. cout<<strlen(str)<<endl;
  37. ReverseStr(str);
  38. cout<<str<<endl;
  39. return 0;
  40. }


  1. public class StrReverse {
  2.  
  3. public static void main(String[] args) {
  4. // TODO Auto-generated method stub
  5. String str="hello i tianjin.";
  6. char []s = str.tocharArray();
  7. reverseWord(s);
  8. System.out.println(new String(s));
  9. }
  10. public static void reverseWord(char []s){
  11. int l = 0;
  12. int r = 0;
  13. reverse(s,l,r+s.length-1);
  14. for(int i=0; i<=s.length;++i){
  15. if(i==(s.length)||s[i]==' '){//注意顺序,否则越界错误
  16. r = i-1;
  17. System.out.println(l+" "+r);
  18. reverse(s,r);
  19. System.out.println(new String(s));
  20. l = i+1;
  21. }
  22. }
  23. }
  24. public static void reverse(char []s,int l,int r){
  25. char temp;
  26. for(int i=0; i<=(r-l)/2; i++)
  27. {
  28. temp = s[l+i];
  29. s[l+i] = s[r-i];
  30. s[r-i] = temp;
  31. }
  32. }
  33. }

猜你在找的设计模式相关文章