鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 手机系统开发 > J2ME > >

10.翻转句子中单词的顺序。

来源:互联网 作者:佚名 时间:2015-09-25 05:49
题目:输入一个英文 句子 , 翻转 句子 中 单词 的 顺序 ,但 单词 内字符的 顺序 不变。 句子 中 单词 以空格符隔开。 为简单起见,标点符号和普通字母一样处理。 例如输入I am a student.,则输出student. a am I。 点击( 此处 )折叠或打开 #include iostr
题目:输入一个英文句子翻转句子单词顺序,但单词内字符的顺序不变。句子单词以空格符隔开。
为简单起见,标点符号和普通字母一样处理。
例如输入I am a student.,则输出student. a am I。

点击(此处)折叠或打开

  1. #include <iostream>
  2. #include <string>

  3. void MyReverse(std::string& str, int i,int j)
  4. {
  5.     for (; i < j; ++i,--j)
  6.     {
  7.         char temp = str[i];
  8.         str[i] = str[j];
  9.         str[j] = temp;
  10.     }
  11. }
  12. void Reverse(std::string& str)
  13. {

  14.     MyReverse(str,0,str.size()-1);
  15.     int begin = -1,end = -1;
  16.     
  17.     int i = 0;
  18.     while (str[i])
  19.     {
  20.         while (str[i] && (str[i] == ' ' || str[i] == '\t' || str[i] == '\n')) i++;
  21.         begin = i;
  22.         while (str[i] && str[i] != ' ' && str[i] != '\t' && str[i] != '\n') i++;
  23.         end = i-1;
  24.         reverse(str,begin,end);
  25.     }
  26. }

  27. int main()
  28. {
  29.     std::string str = "I am a student.";
  30.     Reverse(str);
  31.     std::cout << str << std::endl;
  32. }

网友评论
<