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

2023-08-03力扣今日四题

链接:

剑指 Offer 67. 把字符串转换成整数

题意:

按规则将字符串转换成整数,规则不详叙

解:

字符串处理

实际代码:

#include<iostream>
#include<cstring>
#include<climits>
using namespace std;
int stringToint(string &s)
{int ans=0;for(int i=0;i<s.size();i++){if(s[i]=='+'||s[i]=='-'){ans=int(s[++i]-'0');}else ans=ans*10+int(s[i]-'0');}if(s[0]=='-') ans*=-1;return ans;
}
void solveZero(string &s)
{for(int i=0;i<s.size();i++){if(s[i]=='-'||s[i]=='+') continue;if(s[i]!='0') break;else{s.erase(i,1);i--;}}if(s.empty()) s="0";else if(s[0]=='+') s.erase(0,1);
}
void NoSpace(string &s)
{int pos1=s.find_first_not_of(" ");int pos2=s.find_last_not_of(" ");if(pos1!=-1)s=s.substr(pos1,pos2-pos1+1);
}
int strToInt(string str)
{NoSpace(str);if(str.empty()) return 0;string ans,iMin=to_string(INT_MIN), iMax=to_string(INT_MAX);int zt=0;for(int i=0;i<str.size();i++){if(zt<=1)//状态1 数字或者点 状态0 +- {if(str[i]=='+'||str[i]=='-')//只允许一个符号 {if(zt==0) zt=1;//进入状态1 else break;ans.push_back(str[i]);}else if(str[i]>='0'&&str[i]<='9'){ans.push_back(str[i]);zt=1;//进入状态1 }else break;}}//cout<<ans<<endl;solveZero(ans);cout<<ans<<endl;if(ans.size()==1&&(ans[0]=='+'||ans[0]=='-')) return 0;if(ans[0]=='-')//负{if(ans.size()>iMin.size()) return INT_MIN;else if(ans.size()==iMin.size()){if(ans<iMin) return stringToint(ans);else return INT_MIN;}else return stringToint(ans);}else{if(ans.size()>iMax.size()) return INT_MAX;else if(ans.size()==iMax.size()){if(ans<iMax) return stringToint(ans);else return INT_MAX;}else return stringToint(ans);}return 0;
}
int main()
{string s;getline(cin,s);int ans=strToInt(s);cout<<ans<<endl;return 0;
}

限制:

  • 我不道啊
http://www.lryc.cn/news/108625.html

相关文章:

  • 【学会动态规划】最佳买卖股票时机含冷冻期(15)
  • 随机RSI震荡指标公式(StochRSI),RSI和KDJ二合一
  • 轻松搭建酒店小程序
  • 算法通过村——Hash和队列问题解析
  • 租赁类小程序定制开发|租赁管理系统源码|免押租赁系统开发
  • 后端进阶之路——浅谈Spring Security用户、角色、权限和访问规则(三)
  • Mac 安装不在 Apple 商店授权的应用程序
  • 【MyBatis】MyBatis把空字符串转换成0的问题处理方案(96)
  • OpenLayers实战,OpenLayers获取移动端精确定位,OpenLayers适配App混合H5方式调用手机定位位置并定位到指定点
  • Go指针取址问题:循环后每次都拿到相同内容
  • 用Rust实现23种设计模式之简单工厂
  • SpringBoot + minio实现分片上传、秒传、续传
  • logback 里面设置 自动删除3天之前的日志
  • 对于数据库查询索引和查字典索引的理解
  • git删除已经提交的大文件
  • 【数据分析】pandas 一
  • 题解 | #G.Gcd# 2023牛客暑期多校6
  • 苍穹外卖day10——订单状态定时处理(Spring Task)、来单提醒和客户催单(WebSocket)
  • 【多线程初阶】多线程案例之单例模式
  • 跨境选品怎么选?建议独立站卖家收下这份利基产品查找攻略!
  • [C++项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍...
  • opencv-32 图像平滑处理-高斯滤波cv2.GaussianBlur()
  • Windows 环境Kubernetes安装
  • 自建类ChatGPT服务:本地化部署与远程访问教程
  • 常用SQL语句总结
  • arm交叉编译lmbench
  • ExtJs 7.7.0 下载方法与去除trial水印
  • Android11开发规划
  • 活动隔断在现在酒店运用的方式
  • Jenkins工具系列 —— 插件 钉钉发送消息