正文
C++(四)— 字符串、数字翻转3种方法
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
1、使用algorithm中的reverse函数,string类型字符建议使用。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std; int main()
{
string str;
cin >> str; reverse(str.begin(), str.end()); cout << str << endl;
return ;
}
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
using namespace std;int main()
{
string str;
cin >> str; //reverse(str.begin(), str.end());
//自己实现,交换对应位置字符。
int start = , end = str.size()-;
while (start < end)
{
swap(str[start++], str[end--]);
}
cout << str << endl; return ;
}
2、使用string.h中的strrev函数,char类型字符建议使用。
C++中有函数strrev,功能是对字符串实现反转,但是要记住,strrev函数只对字符数组有效,对string类型是无效的。
#include <iostream>
#include <cstring>
using namespace std; int main()
{
char s[]="hello"; strrev(s); cout<<s<<endl; return ;
}
3、翻转句子单词序列
例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。
class Solution {
public:
string ReverseSentence(string str) {
if(str.empty())
return str;
int start = ,end = str.size()-;
reverse(str, start, end);
start = ;
for(int i=;i<str.size();++i)
{
if(str[i] == ' ')
{
reverse(str, start, i-);
start = i+;
}
}
reverse(str, start, str.size()-);
return str;
}
void reverse(string &str, int start, int end)
{
while(start < end)
swap(str[start++], str[end--]);
}
};
4、数字翻转
123—>321,高位到地位,低位到高位。
void reverse()
{
int n;
int res = ;
cin >> n;
while (n)
{
res = res * + n % ;
n = n / ;
}
cout << res << endl;
}