(C++)字符串相加

简介: (C++)字符串相加

愿所有美好如期而遇


题目链接:415. 字符串相加 - 力扣(LeetCode)

思路

我们看到字符串长度可能到达一万,而且不允许使用处理大整数的库,也就是说,转成整数相加后再转成字符串是不可行的。

那么我们就让字符串尾部的字符各自减去48后单位相加,再加进位,然后得到一个大小,求余后+48尾插到一个我们定义的字符串中,进位除以10,然后不为空的字符串删除尾部的单个字符,这就是单趟。

我们用循环来走,直到两个字符串都为空。

图解

代码

 class Solution {
 public:
 string addStrings(string num1, string num2) 
     {
 string result;
        int next = 0;
         char tmp1 = 0;
         char tmp2 = 0;
         while(!num1.empty() || !num2.empty())
         {
 if(!num1.empty())
                 tmp1 = num1[num1.size()-1] - 48;
 else
                 tmp1 = 0;
 if(!num2.empty())
                 tmp2 = num2[num2.size()-1] - 48;
 else
                tmp2 = 0;
            int sum = tmp1 + tmp2 + next;
 next = sum / 10;
 sum %= 10;
           result += (sum+48);
 if(!num1.empty())
                 num1.erase(num1.end()-1);
 if(!num2.empty())
                 num2.erase(num2.end()-1);
        }
if(next > 0)
           result += '1';
        reverse(result.begin(),result.end());
 return result;
     }   
};


目录
相关文章
|
2月前
|
数据处理 C++
C++程序字符串流
C++程序字符串流
26 2
|
5天前
|
算法 C++
2730. 找到最长的半重复子字符串(c++,滑动窗口)
2730. 找到最长的半重复子字符串(c++,滑动窗口)
|
5天前
|
C++
567. 字符串的排列(c++)滑动窗口
567. 字符串的排列(c++)滑动窗口
|
12天前
|
编译器 C++
【C++】string类的使用④(字符串操作String operations )
这篇博客探讨了C++ STL中`std::string`的几个关键操作,如`c_str()`和`data()`,它们分别返回指向字符串的const char*指针,前者保证以'\0'结尾,后者不保证。`get_allocator()`返回内存分配器,通常不直接使用。`copy()`函数用于将字符串部分复制到字符数组,不添加'\0'。`find()`和`rfind()`用于向前和向后搜索子串或字符。`npos`是string类中的一个常量,表示找不到匹配项时的返回值。博客通过实例展示了这些函数的用法。
|
19天前
|
C++ 容器
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
21 1
|
1月前
|
编译器 C++
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
19 1
|
1月前
|
存储 算法 Cloud Native
C++ bcrypt算法 字符串加密,亲测有效
C++ bcrypt算法 字符串加密,亲测有效
|
2月前
|
C++ 索引
C++中字符串常用操作
C++中字符串常用操作
14 2
|
2月前
|
对象存储 C++ 索引
C++ 字符串操作的技术性探讨
C++ 字符串操作的技术性探讨
9 1
|
2月前
|
存储 安全 C语言
c++字符串
c++字符串
33 1