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 0;
}

 

#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 = 0, end = str.size()-1;
    while (start < end)
    {
        swap(str[start++], str[end--]);
    }
    cout << str << endl;

    return 0;
}

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 0;  
}  

3、翻转句子单词序列

  例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。

class Solution {
public:
    string ReverseSentence(string str) {
        if(str.empty())
            return str;
        int start = 0,end = str.size()-1;
        reverse(str, start, end);
        start = 0;
        for(int i=0;i<str.size();++i)
        {
            if(str[i] == ' ')
            {
                reverse(str, start, i-1);
                start = i+1;
            }
        }
        reverse(str, start, str.size()-1);
        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 = 0;
    cin >> n;
    while (n)
    {
        res = res * 10 + n % 10;
        n = n / 10;
    }
    cout << res << endl;
}

 

posted @ 2018-07-25 16:58  深度机器学习  阅读(8392)  评论(1编辑  收藏  举报