赞
踩
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【字符串转换】,使用【字符串】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为:目标公司+最近一年+出现频率排序,由高到低的去牛客TOP101去找,只有两个地方都出现过才做这道题(CodeTop本身汇聚了LeetCode的来源),确保刷的题都是高频要面试考的题。
明确目标题后,附上题目链接,后期可以依据解题思路反复快速练习,题目按照题干的基本数据结构分类,且每个分类的第一篇必定是对基础数据结构的介绍。
字符串和栈结合的一道题
题目如下
一些用例的示例:
原题解地址,在这里依据题意罗列几个要点:
0 <= c <= '9'
;给出代码实现基本档案
基本数据结构:字符串
辅助数据结构:无
算法:迭代
技巧:无
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++; } // 极端情况下,字符串全为空格,此时返回0 if (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),借助的常量阶的空间
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。