牛客——把字符串转为整数

题目描述:
牛客——把字符串转为整数
牛客——把字符串转为整数
代码:

//一
public class Main6 {
    public int StrToInt(String str) {
        //边界 空字符  “-”  “+”
    if(str.length()==0){
        return 0;
    }else if(str.length()==1&&(str.charAt(0)=='-'||str.charAt(0)=='+')){
        return 0;
    }else{
        int flag=0;//区分正负 0为正数 1为负数
        boolean error=false;
        char[] ch=str.toCharArray();
        int i=0;//索引
        if (ch[0]=='-'){
            i++;
            flag=1;
        }else if(ch[0]=='+'){
            i++;
            flag=0;
        }
        int result=0;//返回的结果
        for (int j=i;j<ch.length;j++){
            if (ch[j]>='0'&&ch[j]<='9'){
                result=result*10+(ch[j]-'0');
            }else{
                error=true;
                break;
            }
        }
        if (!error){
            if (flag==1){
                result=result*(-1);
            }
                return result;
            }else {
            return 0;
        }
    }
    }
    }
public class Main {
//二
  //利用ASIC码:数字0是48,9是57,char型比int型数字大48
    public int StrToInt1(String str) {
        char[] ch = str.toCharArray();
        if (str.length() == 0) {
            return 0;
        }
        int result = 0;
        int m = 0;
        for (int i = str.length() - 1; i >= 0; i--) {
            //如果非数字和符号,直接return 0
            if ((ch[i] < 48 || ch[i] > 57) && ch[i] != '-' && ch[i] != '+') {
                return 0;
            }
            //如果是数字,就从低位到高位累加,每次扩大10倍
            if (ch[i] >= 48 && ch[i] <= 57) {
                result += (ch[i] - 48) * Math.pow(10, m++);
            }
        }
        if (ch[0] == '-') {
            return -result;//判断符号位
        }
        return result;
    }
}
上一篇:PC端 -跨平台应用开发-ec


下一篇:Java描述 LeetCode,剑指 Offer 54. 二叉搜索树的第k大节点