发布于 

剑指 Offer.67-将字符串转化为整数

剑指 Offer.67-将字符串转化为整数

题目链接

剑指 Offer 67. 把字符串转换成整数

问题描述

写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。

个人想法(模拟)

直接按照题意进行模拟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class Solution {
public int strToInt(String str) {
// 将字符串前面的空格去除
String s = str.trim();
int sign = 1;
int res = 0;
int pos = 0;
int budry = Integer.MAX_VALUE / 10;
// 判断删除了空格之后的字符串是否合法
if(s == null || s.length() == 0) return 0;
if(s.charAt(0) == '-'){
sign = -1;
pos++;
}else if(s.charAt(0) == '+'){
sign = 1;
pos++;
}else if(s.charAt(0) >='0' && s.charAt(0) <='9'){
//当前字符串无法被转换 return -1;
sign = 1;
}else{
return 0;
}

// 当函数不能进行转换的时候返回0
for(int i=pos;i<s.length();i++){
if(!(s.charAt(i)>='0' && s.charAt(i)<='9')){
//当遍历到非字符 直接停止遍历
break;
}
// 判断是否越界(越界判断在开始未想出来)
if(res > budry || (res == budry && s.charAt(i) > '7')){
if(sign == 1){
return Integer.MAX_VALUE;
}else if(sign == -1){
return Integer.MIN_VALUE;
}
}
// 通过乘以10实现算数左移
res = res * 10 + (s.charAt(i)-'0');
}

return res*sign;
}
}

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @John Doe 创建,使用 Stellar 作为主题。