首页 > 编程语言 > 详细

c++中字符串翻转的方法,用于刷题

时间:2021-07-08 10:15:43      阅读:34      评论:0      收藏:0      [点我收藏+]

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

 

 

 

c++中字符串翻转的方法,用于刷题

原文:https://www.cnblogs.com/nanfengnan/p/14984306.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!