leetcoede 8 字符串转换整数
复制代码
 1 class At{
 2     string state="start";
 3     unordered_map<string,vector<string>>table={
 4         {"start",{"start","signed","in_number","end"}},
 5         {"in_number",{"end","end","in_number","end"}},
 6         {"signed",{"end","end","in_number","end"}},
 7         {"end",{"end","end","end","end"}}
 8     };//状态转换图
 9     int get_c(char c){
10         if(c==' '){
11             return 0;
12         }else if(c=='+'||c=='-'){
13             return 1;
14         }else if(c>='0'&&c<='9'){
15             return 2;
16         }
17         return 3;
18     }//分别对应空格,加减,数字,其他
19 public:
20     int sign=1;
21     long long ans=0;
22     void get(char c){
23         state=table[state][get_c(c)];
24         if(state=="signed"){
25             sign=c=='+'? 1:-1;
26         }else if(state=="in_number"){
27             ans=ans*10+c-'0';
28             ans=sign==1?min(ans,(long long)INT_MAX):min(ans,-(long long)INT_MIN);//注意点INT_MAX!=-INT_MIN
29         }
30     }
31 };
32 class Solution {
33 public:
34     int myAtoi(string str) {
35         At at;
36         for(auto x:str){
37             at.get(x);
38         }
39         return at.sign*at.ans;
40     }
41 };
复制代码

 

posted on   greenofyu  阅读(156)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示