字符串或数字反转

字符串反转

有以下几种情形:

第一种是将字符串按字符全部反转

//输入
I am a student
//输出
tneduts a ma I

这种情形实现比较简单,只需要将输入的字符串按字符倒序输出即可。

#include<iostream>
#include<string>
using namespace std;

int main(){
    
    string str;
    getline(cin, str);
    for(int i = str.size()-1; i>=0; i--){
        cout<<str[i];
    }
    cout<<endl;//最后再输出换行符
    return 0;
}

第二种是将字符串以单词为单位反转

//输入
I am a student
//输出
student a am I

这种情形可以将字符串中的单词都装进string类型的vector中,然后倒序输出vector中的元素。

#include<iostream>
#include<vector>
#include<string>
using namespace std;

int main(){
    vector<string> str;
    string s;
    while(cin>>s){
        str.push_back(s);
    }
    for(int i=str.size()-1; i>=0; i--){
        cout<<str[i]<<' ';
    }
    cout<<endl;
    return 0;
}

也可以采用reverse()方法将迭代器begin()和end()之间的元素反转,范围for循环输出。

使用reverse()方法要包含algorithm头文件。

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;

int main()
{
    vector<string> str;
    string s;
    while(cin>>s){
        str.push_back(s);
    }
    reverse(str.begin(),str.end());//元素全部反转    
    for(auto v : str)//范围for循环
    {
        cout<<v<<' ';
    }
    
    return 0;
}

 还有一种情形是需要考虑非英文字符,并将非英文字符转换为单词间隔

如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符

这个时候只要适当加上一些判断条件就可以了。

 

数字颠倒

输入一个int整数,将这个整数以字符串的形式逆序输出。不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001。

这里用到了to_string()方法,要包含algorithm头文件。

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

int main(){
    int n;//按照int型接收
    while(cin>>n){
        string str = to_string(n);//int转化为string
        reverse(str.begin(), str.end());//反转全部元素
        cout<<str<<endl;
    }
    return 0;
}

 C++11

posted @ 2020-03-23 15:26  程序虫  阅读(479)  评论(0编辑  收藏  举报