字符串反转
有以下几种情形:
第一种是将字符串按字符全部反转
//输入 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