目录
1.字符串转换整数
a.核心思想
b.思路
c.步骤
2.new和malloc的区别
1.字符串转换整数
8. 字符串转换整数 (atoi) - 力扣(LeetCode)https://leetcode.cn/problems/string-to-integer-atoi/submissions/693360753/
class Solution { public: int myAtoi(string s) { int i = 0; // 跳过前导空格 while (i < s.size() && s[i] == ' ') { i++; } if (i == s.size()) return 0; // 确定符号 int sign = 1; if (s[i] == '-') { sign = -1; i++; } else if (s[i] == '+') { i++; } // 转换数字 long long result = 0; while (i < s.size() && isdigit(s[i])) { result = result * 10 + (s[i] - '0'); // 检查溢出 if (result * sign > INT_MAX) return INT_MAX; if (result * sign < INT_MIN) return INT_MIN; i++; } return (int)(result * sign); } };a.核心思想
通过遍历字符串,按照给定的规则逐步解析字符串中的数字字符,将其转换为对应的整数,同时处理符号和溢出情况。
b.思路
① 去除字符串前导空格。
② 确定符号。
③ 遍历字符串,将数字字符转换为数字,直到遇到非数字字符或字符串结束。
④ 检查整数是否溢出,若溢出则进行截断处理。
c.步骤
① 使用指针或索引遍历字符串,跳过前导空格。
② 检查并记录符号。
③ 循环读取数字字符,将其转换为数字并累加到结果中。
④ 在每次累加后检查是否溢出,若溢出则根据符号进行截断。
⑤ 返回最终结果。
2.new和malloc的区别
new | malloc | |
本质 | C++ 的运算符,属于语言内置特性。 | C 标准库函数,属于运行时库的一部分。 |
内存分配和初始化 |
|
|
内存释放 |
|
|
参数与返回值 |
|
|
失败处理 |
|
|
重载与自定义 |
|
|
总结
C++ 优先用
new/delete,因为它们与对象生命周期(构造/析构)无缝集成。
malloc/free适用于 C 或需要直接操作内存的场景(如底层开发)。
希望这些内容对大家有所帮助!
感谢大家的三连支持!