响应式网站自助建设,做网站和做网页有啥区别,培训中心网站建设论文,代做网站优化废话不多说#xff0c;喊一句号子鼓励自己#xff1a;程序员永不失业#xff0c;程序员走向架构#xff01;本篇Blog的主题是【字符串转换】#xff0c;使用【字符串】这个基本的数据结构来实现#xff0c;这个高频题的站点是#xff1a;CodeTop#xff0c;筛选条件为喊一句号子鼓励自己程序员永不失业程序员走向架构本篇Blog的主题是【字符串转换】使用【字符串】这个基本的数据结构来实现这个高频题的站点是CodeTop筛选条件为目标公司最近一年出现频率排序由高到低的去牛客TOP101去找只有两个地方都出现过才做这道题CodeTop本身汇聚了LeetCode的来源确保刷的题都是高频要面试考的题。
明确目标题后附上题目链接后期可以依据解题思路反复快速练习题目按照题干的基本数据结构分类且每个分类的第一篇必定是对基础数据结构的介绍。
字符串转为整数【MID】
字符串和栈结合的一道题
题干
题目如下 一些用例的示例
解题思路
原题解地址在这里依据题意罗列几个要点
根据示例 1需要去掉前导空格根据示例 2需要判断第 1 个字符为 和 - 的情况因此可以设计一个变量 sign初始化的时候为 1如果遇到 - 将 sign 修正为 -1判断是否是数字可以使用字符的 ASCII 码数值进行比较即 0 c 9根据示例 3 在遇到第 1 个不是数字的字符的情况下转换停止退出循环根据示例 5如果转换以后的数字超过了 int 类型的范围需要截取。这里不能将结果 res 变量设计为 long 类型注意由于输入的字符串转换以后也有可能超过 long 类型因此需要在循环内部就判断是否越界只要越界就退出循环这样也可以减少不必要的计算由于涉及下标访问因此全程需要考虑数组下标是否越界的情况。
代码实现
给出代码实现基本档案 基本数据结构字符串 辅助数据结构无 算法迭代 技巧无 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可*** param n int整型 the n* return int整型*/public int myAtoi(String s) {// 1 初始化下标并删除下标前的空格int index 0;while (index s.length() s.charAt(index) ) {index;}// 极端情况下字符串全为空格此时返回0if (index s.length()) {return 0;}// 2 判断第一个非空格字符的符号获取整数的符号,无论正负均继续向前探索int sign 1;if (s.charAt(index) -) {sign -1;index;} else if (s.charAt(index) ) {index;}// 3 循环判断进行数字读取int result 0;while (index s.length()) {// 3-1 如果为非数字则终止if (s.charAt(index) 0 || s.charAt(index) 9) {break;}// 3-2 如果为数字则需要判断增加数字后是否会溢出int curNum s.charAt(index) - 0;// 如果当前值*10后大于上届或当前值*10等于上届但本级数字大于上届的取模则证明本层遍历完还是大于上届if (result Integer.MAX_VALUE / 10 || (result Integer.MAX_VALUE / 10 Integer.MAX_VALUE % 10 curNum)) {return sign 0 ? Integer.MAX_VALUE : Integer.MIN_VALUE;}// 3-3 如果未越界则正常存值,每次新读入值后上一个结果就要扩大10倍result result * 10 curNum;index;}return sign * result;}}复杂度分析
时间复杂度 O(N)一次遍历 s 空间复杂度 O(1)借助的常量阶的空间