zoukankan      html  css  js  c++  java
  • c++中字符串翻转的方法,用于刷题

    1.使用算法头文件中的reserve

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
        string s = "hello";
    
        reverse(s.begin(),s.end());
    
        cout<<s<<endl;
    
        return 0;
    }

     2.算法实例:

    大数加法

    描述

    以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
    (字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)
     
     
    示例1
    输入:
    
    "1","99"
    
    返回值:
    
    "100"
    
    说明:
    
    1+99=100 

    算法思想:

    //算法思想:从后向前遍历字符串,同时对应位的字符相加,同时将每次进位保存在af中,将新生成的字符放入u的后面,最后在将字符串倒转即可   就是模拟加法
    //关键点:字符->整数:-'0'或者-48
    //整数->字符:+'0'或者+48

    算法代码:c++

    class Solution {
    public:
    string solve(string s,string t)
    {
        int af=0;    //进位位
        string u;
        int a=s.length(),b=t.length();    //求字符串长度
        while (a-->0 && b-->0)      
        {
            int x=s.at(a)-'0';        //将字符串中的字符变为整数
            int y=t.at(b)-'0';int z=(x+y+af)%10;    //本位结果
            af =(x+y+af)/10;     //进位的值
            z=z+'0';          //整数变为字符
            u.push_back(z);      //将字符加入字符串的末尾,现在的字符串是倒转的
        }while (a-->0)        
        {
            int x=s.at(a)-'0';
            int z=(x+af)%10;
            af=(x+af)/10;
            z=z+'0';
            u.push_back(z);
        }
        while (b-->0)
        {
            int y=t.at(b)-'0';
            int z=(y+af)%10;
            af=(af+y)/10;
            z=z+'0';
            u.push_back(z);
        }
        if (af>0)
            u.push_back(af+'0');
        reverse(u.begin(),u.end());  //颠倒字符串方法,在算法头文件中
        return u;
    }
    };
  • 相关阅读:
    图论
    城市吸引力指数
    bzoj3529(莫比乌斯反演+离线+树状数组)
    强制关闭tomcat
    bzoj2154(莫比乌斯反演)
    等差数列求和模板
    联想的显示屏校准(困难)
    bzoj2301(莫比乌斯反演)
    莫比乌斯反演模版
    菜鸟物流的运输网络(网络流)
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/14984306.html
Copyright © 2011-2022 走看看