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;
}
};
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· DeepSeek+PageAssist实现本地大模型联网
· 手把手教你更优雅的享受 DeepSeek
· Java轻量级代码工程
· 从 14 秒到 1 秒:MySQL DDL 性能优化实战