LeetCode,8. String to Integer (aoti)
先看题目描述
大意就是给定一个字符串,实现一个将其转换成整数的函数,该函数会丢弃开头无用的空格字符,直到碰到第一个非空字符,若第一个非空字符不为 ‘+’ 或 ‘-‘ 或 数字,则直接返回0;然后将之后的部分转化为整数,直至碰到不是数字的字符
算法和思路
算法流程:
初始化 ans = 0,flag = true
定义 left 和 right 两个指针分别指向字符串一头一尾,然后 left 和 rright 向内移动,直至遇到非空字符,若 left 和 right 停止移动时,left > right,说明字符串内全是空格,返回 0
left 和 right 停止移动时,判断此时 s[left] 是否为 ‘+’ 或 ‘-‘ 或数字,若均不是的话,则直接返回 0;若是 + 或 - 的话,则将 left + 1;若是 - 的话,则同时将 flag 置为 false
右移 left 指针来遍历 left 和 right 之间部分,若 s[left] 是数字,则 pre = ans,ans = ans * 10 + s[left];同时还要比较此时的 pre 与 ans / 10,若不相等,则说明 ans 溢出了,根据 flag 的值来返回 Integer.MAX_VALUE 或 Integer.MIN_VALUE;若 s[left] 不为数字,则跳出循环
若 flag 为 true,则返回 ans;否则,返回 -ans
算法源码
1 | class Solution { |