zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    ATOMac
    基于Python3 + appium的Ui自动化测试框架
    记 被难到的第一个算法题
    Requests发Post请求data里面嵌套字典
    Struts,Sping和Spirng MVC等框架分析
    雷军的留名,不是以程序员身份
    你有考虑过如果不做程序员,你会从事什么职业吗?或者你现在正在发展什么第二职业?
    java中的运算运算符 与或非(转)
    记录常用函数
    SQLServer记录常用函数(转)
  • 原文地址:https://www.cnblogs.com/eilearn/p/9366938.html
Copyright © 2011-2022 走看看