题目描述:
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例:
输入:
+2147483647
1a33输出:
2147483647
0
解题思路:
看到题目,感觉很简单。但是题目标注难度为:难
看到题的内容,发现是一道很简单的算法题。
题意是给一个字符串,该字符串第一个字符为“+”或者“-”或者数字,该字符串的其他位置均为数字,则是一个合法的字符串,将其转换为数字输出;否则,就是一个不合法的字符串,均输出0。
假设字符为123,则计算方式为:
num=1;
num=1*10+2;
num=12*10+3;
解题代码:
public class Solution {
public int StrToInt(String str) {
int num=0;
int index=0;
int size=str.length();
for(int i=0;i<size;i++){
if(i==0){
if(str.charAt(0)=='+'){
index=1;
}else if(str.charAt(0)=='-'){
index=2;
}else if(str.charAt(0)>=48&&str.charAt(0)<=57){
num=str.charAt(0)-48;
}else{
index=3;
return 0;
}
}
else{
if(str.charAt(i)>=48&&str.charAt(i)<=57){
num=num*10+(str.charAt(i)-48);
}else{
return 0;
}
}
}
if(index==1){
return num;
}else if(index==2){
return 0-num;
}else{
return num;
}
}
}