当前位置: 首页 > ds >正文

LeetCode 刷题【8. 字符串转换整数 (atoi), 9. 回文数】

8. 字符串转换整数 (atoi)

自己做 

解:遍历读取

class Solution {
public:int myAtoi(string s) {int sum = 0;                //读取的数字int len = s.size();         //字符串长度       bool sub_num = false;        //数字符号【默认为+】bool frist = false;         //表示遇到第一个正负号//从左往右读int start = 0;while (s[start] == ' ')     //忽略字符串前面的空格start++;for (int i = start; i < len; i++) {if (s[i] < 48 && s[i] > 57 && s[i] != '+' && s[i] != '-' && !frist)      //遇到了非数字非+-的字符直接返回return sum;if ((s[i] == '+' || s[i] == '-') && !frist) {          //遇到的第一个正负符号if (s[i] == '-')                      //负号sub_num = true;frist = true;continue;                           //跳过累加}if (s[i] >= 48 && s[i] <= 57 && !frist)      //没有+-,直接是数字frist = true;//累加if (s[i] >= 48 && s[i] <= 57) {        //是数字int add = s[i] - 48;if (sub_num)                     //为负的情况add = -add;//累加前判断溢出if (!sub_num &&sum > std::numeric_limits<int>::max() / 10 ||(sum == std::numeric_limits<int>::max() / 10 && add > 7))            //为正大于最大值return std::numeric_limits<int>::max();if (sub_num &&sum < std::numeric_limits<int>::min() / 10 ||(sum == std::numeric_limits<int>::min() / 10 && add < -8))            //为负小于最小值return std::numeric_limits<int>::min();sum = sum * 10 + add;           //累加}else {                    //遇到非数字,直接返回return sum;}}return sum;}
};

9. 回文数

自己做

解1:求余取数

class Solution {
public:bool isPalindrome(int x) {int left_div = 1;int right_div = 1;int mutil = 10;int len = 1;            //x的长度//负数必定不是回文数if (x < 0)return false;//cout << x / left_div << endl;while (x / left_div >= 10) {left_div *= 10;len++;}//cout << left_div << ","<< len <<endl;for (int i = 0; i < len / 2; i++) {       //比较一半即可if (x / left_div % 10 == x % mutil / right_div) {     //相等left_div /= 10;right_div *= 10;mutil *= 10;}else {                       //出现不相等return false;}}return true;}
};

解2:转换字符串

class Solution {
public:bool isPalindrome(int x) {string s;if (x < 0)return false;while (x != 0) {s.push_back(x % 10 + 48);         //ASCII码转换x /= 10;}int len = s.size();for (int i = 0; i < len / 2; i++) {if (s[i] != s[len - 1 - i])return false;}return true;}
};

http://www.xdnf.cn/news/16027.html

相关文章:

  • 学成在线项目
  • 手推OpenGL相机的正交投影矩阵和透视投影矩阵(附源码)
  • Unity 新旧输入系统对比
  • 开发工具缓存目录
  • Redis通用常见命令(含面试题)
  • [数据库]Neo4j图数据库搭建快速入门
  • 设备健康管理实施案例:中讯烛龙预测性维护系统的实战应用
  • 基于bert-lstm对微博评论的情感分析系统设计与实现
  • 新版 Java SE 集合框架 Map 篇
  • Pycharm的Terminal打开后默认是python环境
  • Kafka 在分布式系统中的关键特性与机制深度解析
  • 基于Pytorch的人脸识别程序
  • 1948. 删除系统中的重复文件夹
  • 定点小数与分数
  • langchain调用本地ollama语言模型和嵌入模型
  • 线程状态线程安全
  • gradle微服务依赖模版
  • 软件反调试(5)- 基于注册表实时调试器检测
  • [Python] -项目实战7- 用Python和Tkinter做一个图形界面小游戏
  • 我的世界-推理
  • 基于Event Sourcing和CQRS的微服务架构设计与实战
  • 连接语言大模型(LLM)服务进行对话
  • 随着GPT-5测试中泄露OpenAI 预计将很快发布 揭秘GPT-5冲击波:OpenAI如何颠覆AI战场,碾压谷歌和Claude?
  • [硬件电路-58]:根据电子元器件的控制信号的类型分为:电平控制型和脉冲控制型两大类。
  • 威力导演 12:革新级影音创作平台——专业特效与极致效率的完美融合
  • 算法题(176):three states
  • 100个GEO基因表达芯片或转录组数据处理27 GSE83456
  • [simdjson] 实现不同CPU调度 | 自动硬件适配的抽象
  • JAVA面试宝典 -《API设计:RESTful 与 GraphQL 对比实践》
  • Linux操作系统之线程(四):线程控制