LeetCode 8. String to Integer (atoi)(字符串)

xiaoxiao2021-02-28  100

LeetCode 8. String to Integer (atoi)(字符串)

LeetCode 8 String to Integer atoi字符串 问题描述解题思路参考代码

By ScarbScarb’s Blog

Tags: - Math - String

问题描述

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

解题思路

这题要实现atoi,将字符串转换成数字。 有很多细节需要注意。 包括: 空格、正负号、正负号重复出现、溢出。

参考代码

#include <iostream> #include <string> #include <cctype> using namespace std; class Solution { public: int myAtoi(string str) { int result = 0; int sign = 1; const int n = str.length(); int i = 0; while (str[i] == ' ' && i < n) ++i; // 处理空格 if (str[i] == '+') // 处理正负号 ++i; else if (str[i] == '-') { sign = -1; ++i; } for (; i < n; ++i) { if (str[i] < '0' || str[i] > '9') // 处理非法字符 break; if (result > INT_MAX / 10|| (result == INT_MAX / 10 && (str[i] - '0') > INT_MAX % 10)) // 处理溢出 return sign == -1 ? INT_MIN : INT_MAX; result = result * 10 + str[i] - '0'; } return sign * result; } }; int main() { string s1("2147483648"); Solution sl = Solution(); cout << sl.myAtoi(s1) << endl; system("pause"); return 0; }
转载请注明原文地址: https://www.6miu.com/read-28558.html

最新回复(0)