leetcode-8,真恶心

news/2024/11/15 20:06:59/文章来源:https://www.cnblogs.com/2277241439qaq/p/18329838

题目:

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数。

推导:

代码:

 1 class Automaton {
 2 public:
 3     int sign = 1; // 初始化默认符号
 4     long long ans = 0; // 初始化整数
 5     unordered_map<string, vector<string>> table = {
 6         {"start", {"start", "signed", "in_number", "end"}},
 7         {"signed", {"end", "end", "in_number", "end"}}, 
 8         {"in_number", {"end", "end", "in_number", "end"}},
 9         {"end", {"end", "end", "end", "end"}}
10     };
11 
12     // 定义输入类型
13     int get_char(char c) {
14         if (isspace(c)) return 0;
15         // 当比较字符时,确保使用单引号来表示字符字面量,而不是双引号的字符串字面量
16         if (c == '+' || c == '-') return 1;
17         if (isdigit(c)) return 2;
18         return 3;
19     }
20 
21     // 对输出整数进行操作
22     string output (char c, string state) {
23         // 状态转移
24         state = table[state][get_char(c)];
25 
26         // 计算整数
27         if (state == "in_number") {
28             ans = ans*10 + c - '0';
29             // 注意:这里采用 min(ans, -(long long)INT_MIN) 而不是 max(ans, (long long)INT_MIN) 是因为
30             // 这里的 ans 还没有乘 sign 这个正负号,所以都是非负数,自然就不能和下限进行比较了
31             ans = sign == 1 ? min(ans, (long long)INT_MAX) : min(ans, -(long long)INT_MIN);
32         }
33         // 计算正负
34         if (state == "signed") sign = c == '+'? 1 : -1;
35 
36 
37         return state;
38     }
39 };
40 
41 
42 class Solution {
43 public:
44     string state = "start";
45     int ans = 0;
46     int myAtoi(string s) {
47         Automaton automaton;
48         for (char c : s) {
49             state = automaton.output(c, state);
50         }
51         return automaton.sign * automaton.ans;
52     }
53 };

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/773549.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读:Sequence to sequence learning for joint extraction of entities and relations

用以解决重叠关系问题 GGNNs模型 GGNNs(门控图神经网络,Gated Graph Neural Networks)是一种处理图结构数据的神经网络模型。它是图神经网络(GNN)的一个变体,使用了类似于长短时记忆网络(LSTM)中的门控机制来更有效地处理图中的信息流。 GGNNs的核心机制 GGNNs的核心思…

关于网站安全狗卸载了仍然能拦截的问题解决

关于网站安全狗卸载了仍然能拦截的问题解决如果你将所有safedog的文件删除的话,可能会导致Apache服务启动不了例如:这里没有提示相关安全狗的信息是因为我已经删除了Apache访问safedog的配置代码,只是提醒错误信息会如上图所示。 导致这种原因的结果大概率是因为Apache的con…

搭建自动化 Web 页面性能检测系统 —— 部署篇

我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。本文作者:琉易 liuxianyu.cn这一篇是系列文章: 搭建自动化 Web 页面性能检测系统 —— 设计篇 搭建自动化 Web 页面性能检测系统 —— 实现…

如何根据Linux Kernel Mailing List打patch

Linux内核正在不断开发和改进。每天的补丁都会提交到Linux内核邮件列表(LKML)。其中一些补丁被接受并合并到主流Linux内核中,供用户使用,而其他补丁则永远无法使用。 有时从LKML获取补丁是有用的,例如,如果你在内核中开发,或者只是因为你想保持在前沿。另一个原因可能是…

基于Drone实现CI/CD【0到1架构系列】

CI/CD是持续性集交和持续性部署,简单来讲就是自动化构建和自动化部署。目前有很多集成方案,也有很多组装方案,只要能实现自动化构建出制品,再自动部署到生产环境就行。 目前很多源代码都集成了CI/CD功能,drone也是目前比较流行的一个方案,简单易用,高性能。 前提条件 已…

Django项目快速上手:从安装到创建应用

Django项目快速上手:从安装到创建应用 安装Django 首先,确保你已经安装了 Python 和 pip。然后,使用以下命令来安装 Django : pip install django安装成功后,你就可以开始创建Django项目了。 创建Django项目 打开你的终端或命令提示符,然后使用 django-admin 命令来创建一…

Pulsar客户端消费模式揭秘:Go 语言实现 ZeroQueueConsumer

前段时间在 pulsar-client-go 社区里看到这么一个 issue:import "github.com/apache/pulsar-client-go/pulsar"client, err := pulsar.NewClient(pulsar.ClientOptions{URL: "pulsar://localhost:6650", }) if err != nil {log.Fatal(err) } consumer, er…

配置 setting.py

配置 setting.py Django项目的配置主要通过settings.py文件完成。这个文件位于项目的根目录下(与manage.py同级)。为了让你的应用更加本地化,你可能需要修改一些设置,比如语言、时区等。打开settings.py文件,并找到以下设置进行修改: # setting.py# 语言设置(en-us:英文…

关于GPIO输出模式下3种频率的解释

配置GPIO输出模式时,有3种频率可以选择,2MHz、10MHz和50MHz,如下图:这三个频率说的是I/O口驱动电路的响应频率而不是输出信号的频率。芯片的内部做了多个响应频率不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路。通过选取不同频率的输出驱动电路达到最佳的…

二手车交易预测模型笔记

一、梯度下降法 梯度下降法就是一种通过求目标函数的导数来寻找目标函数最小化的方法。梯度下降目的是找到目标函数最小化时的取值所对应的自变量的值,目的是为了找自变量X。 梯度:是一个矢量,其方向上的方向导数最大(意味着在这个方向上,函数的值增加最快。从图形上看,就…

Qt+OpenCascade开发笔记(二):windows开发环境搭建(二):Qt引入occ库,搭建基础工程模板Demo和发布Demo

前言Open CASCADE是由Open Cascade SAS公司开发和支持的开源软件开发平台,旨在为特定领域快速开发程序而设计。它是一个面向对象的C++类库,提供了丰富的几何造型、数据交换和可视化等功能,成为许多CAD软件的核心组件。  本篇描述搭建Qt开发occ环境过程。 Demo注意:用的是…