华为机试HJ31:单词倒排

简介: 华为机试HJ31:单词倒排

题目描述:

字符串中的所有单词进行倒排。

说明:

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母;

输入描述:

输入一行以空格来分隔的句子

输出描述:

输出句子的逆序

示例:

输入:

I am a student

输出:

student a am I

解题思路:

首先,定义一个临时字符串,遍历输入的字符串,将字母字符放入临时字符串temp,当遇到非字母字符时,temp放入容器中存储,并清空临时字符串,此时已经拿到一个单词,继续获取下一个单词;考虑到最后的非结尾符字符可能是字母,当遍历完后,将非空临时字符串存储的最后一个单词也要放入容器中;倒序输出容器中的string单词,完成。

测试代码:

#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    vector<string> vs;
    string temp;
    for(int i=0;i<s.size();++i)
    {
        if((s[i]>='A'&&s[i]<='Z')||(s[i]>='a'&&s[i]<='z'))
        {
            temp+=s[i];
        }
        else{
            if(!temp.empty())
            {
                vs.push_back(temp);
                temp.clear();
            }
        }
    }
    if(!temp.empty())
    {
        vs.push_back(temp);
    }
    for(int i=vs.size()-1;i>=0;--i)
    {
        cout<<vs[i]<<" ";
    }
    return 0;
}


相关文章
|
8月前
|
算法
华为机试HJ14:字符串排序
华为机试HJ14:字符串排序
|
8月前
|
人工智能
华为机试HJ26:字符串排序
华为机试HJ26:字符串排序
|
1月前
每日一题(数字颠倒,单词倒排)
每日一题(数字颠倒,单词倒排)
18 1
|
8月前
华为机试HJ106:字符逆序
华为机试HJ106:字符逆序
|
8月前
|
容器
华为机试HJ102:字符统计
华为机试HJ102:字符统计
|
8月前
华为机试HJ13:句子逆序
华为机试HJ13:句子逆序
|
8月前
华为机试HJ40:统计字符
华为机试HJ40:统计字符
|
8月前
华为机试HJ65:查找两个字符串a,b中的最长公共子串
华为机试HJ65:查找两个字符串a,b中的最长公共子串
|
8月前
华为机试HJ1:字符串最后一个单词的长度
华为机试HJ1:字符串最后一个单词的长度
|
8月前
|
存储
华为机试HJ27:查找兄弟单词
华为机试HJ27:查找兄弟单词