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

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.dtcms.com/a/289206.html

相关文章:

  • 国产HMC7044调试记录
  • 【Elasticsearch】合适的锅炒合适的菜:性能与成本平衡原理公式解析
  • 拓展面试题之-rabbitmq面试题
  • MySQL笔记3
  • 试用SAP BTP 02:试用SAP HANA Cloud
  • 【机器学习【9】】评估算法:数据集划分与算法泛化能力评估
  • 图的表示法以及实现
  • 【人工智能99问】长短期记忆网络(LSTM)的结构和原理是什么?(12/99)
  • ROS_INFO_STREAM, 模拟cout流输出机制的ROS输出接口
  • 《棒球知识科普》NBA、MLB选秀状元·棒球1号位
  • Everything介绍
  • 《杜甫传》读书笔记与经典摘要(一)
  • 事务的传播行为,分别在spring和mysql中讲解
  • PyTorch模型Ensemble实现
  • 14.多播与广播
  • Vue3.6 无虚拟DOM模式
  • 基于本机如何建立一个vue项目
  • Linux主机 ->多机器登录
  • Openlayers 面试题及答案180道(121-140)
  • Chapter 3 Design of Switching Power Regulators
  • 两个数据表的故事:第 1 部分
  • MacBook的ARM架构(M芯片)操作虚拟机的docker拉取镜像问题
  • 深入浅出理解动态规划
  • 【Lua】大G表
  • C++STL之stack和queue
  • C++string类简介
  • MySQL 配置性能优化实操指南:分版本5.7和8.0适配方案
  • 解锁Phpenv:轻松搭建PHP集成环境指南
  • C++运算符重载
  • 【智能协同云图库】第一期:用户管理接口设计与功能实现