【华为机试】句子逆序
来源:互联网 发布:熟悉office办公软件 编辑:程序博客网 时间:2024/05/17 07:43
题目描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
输入描述:将一个英文语句以单词为单位逆序排放。
输出描述:得到逆序的句子
输入 I am a boy
输出 boy a am I
方法一分析:先把整个字符串反过来,在把每个单词反过来。
#include <iostream>#include <string>using namespace std;void reserve(string &s,int start,int end){int l = start, r = end;while (l < r)swap(s[l++], s[r--]);}int main(){string s;while (getline(cin, s)){if (s.empty()) continue;reserve(s,0,s.size()-1);int start = 0, end = 0;while (start<=end){while (s[end] != ' '){end++;if (s[end] == '\0') break;}reserve(s, start, end - 1);if (s[end] == '\0') break;start = ++end;}cout << s << endl;}return 0;}
方法二分析:遍历字符串,以单词和空格为单元,插入到结果字符串的前面;
#include <iostream>#include <string>using namespace std;int main(){string s;while (getline(cin, s)){int i = 0;string res;while (i < s.size()){if (s[i] == ' ') res.insert(res.begin(),s[i++]);else {string temp; //temp用来保存单词;while (i<s.size()&&s[i] != ' ') //注意有个i<s.size(),否则i会越界;temp += s[i++];res = temp + res;}}cout << res << endl;}return 0;}
阅读全文
0 0
- 【华为机试】句子逆序
- 华为机试——句子逆序
- Java - 华为机试训练 - 句子逆序
- 华为机试——句子逆序
- 华为机试题:句子逆序
- 华为机试在线训练-牛客网(8)句子逆序
- 牛客网_华为机试_013_句子逆序
- 华为机试题--11.句子逆序
- 华为OJ_1950_句子逆序
- 【华为oj1950】句子逆序
- 【华为oj】句子逆序
- 华为 OJ 句子逆序
- 【华为oj】句子逆序
- 华为oj 句子逆序
- 【华为 OJ】 句子逆序
- 【华为OJ13】句子逆序
- 【华为OJ14】句子逆序
- 华为OJ:句子逆序
- python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
- Date类获取Date时间的各种方法
- 一.标识符、常量、枚举、变量
- 高频、射频、微波的区别
- vue-route+webpack部署单页路由项目,访问刷新出现404问题
- 【华为机试】句子逆序
- bzoj 2803: [Poi2012]Prefixuffix(双Hash)
- Ubuntu下安装搭建SS
- 1001 A+B Format (20)
- Hbase教程(四) Hbase数据库JavaAPI接口
- Mybatis传递多个参数的解决办法(三种)
- Acticle 23:有关浏览器中使用js跨域获取数据的描述
- Java IO 流总结
- c#冒泡排序 从大到小排序