剑指offer----将字符串转化成整数
2017-11-25 22:38
246 查看
题目:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0
下面我先介绍一下自己的思路,首先我们肯定要对字符串转化成数组,然后进行过滤操作,其次一个难点是转换之后的整数可能为正数或者负数,这也需要我们进行判断的,既然可以转换成整数,说明我们输入的字符串肯定是在0-9这个区间范围,最容易忽视的一点就是我们容易漏掉整数表示范围溢出的问题。考虑好这些问题,下面我们可以先试着写一下代码
/*要点: 1. 异常输入和0输入的区分,设置一个全局变量 2. 正负号的处理 3. 溢出处理*/ public class Solution { public int StrToInt(String str) { //对结果的保存 int result = 0; //对符号的标志 1 0 -1 默认为正 int symbol = 1; //判断输入的值是否为0 boolean isValid = false; //对传入的字符串进行转换成数组 char[] array = str.toCharArray(); if (array == null || array.length <= 0) { return 0; } //如果输入第一个位为- 则更改标志为-1 if (array[0] == '-' ) { symbol = -1; } //对正负号的处理需要过滤掉第一位为正负号 直接对符号进行循环前过滤 for(int i = (array[0] == '+' || array[0] == '-') ? 1 : 0; i < array.length; i++){ //对输入内容进行校验输入值不再0-9范围 if (!('0' <= array[i] && array[i] <= '9') ){ isValid = true; return 0; } //对得到结果结果处理 //res=res*10+arr[i]-'0' result = result * 10 + array[i] - '0'; //result = (result << 1) + (result <<3) + (array[i] & 0xf); //对溢出进行判断 if ((symbol == 1 && result > Integer.MAX_VALUE) || (symbol == -1 && result < Integer.MIN_VALUE)) { isValid = true; return 0; } } return result * symbol; } }
相关文章推荐
- 剑指offer43--字符串转化成整数
- 【剑指Offer】将字符串转化为整数
- 【剑指Offer】面试题49:把字符串转化为整数
- 剑指offer--把字符串转换成整数
- 剑指offer — 把字符串转换成整数
- [剑指offer][面试题49]把字符串转换成整数(待完善)
- 剑指offer-----将一个字符串转换成对应的整数(模拟atoi)
- 剑指offer——把字符串转换成整数
- 剑指Offer--049-把字符串转换成整数
- 【剑指offer】题49:字符串转整数
- 【剑指offer】字符串转整数
- 【剑指offer】把字符串转换成整数
- 剑指offer-字符串转化为数字
- 剑指offer | 训练题48:把字符串转换成整数
- 剑指offer-把字符串转换为整数
- 剑指offer之字符串到整数的转换,例如输入字符串12345,输出整数12345.
- 剑指offer面试题49 把字符串转换成整数 (java实现)
- 剑指offer-将字符串转化为数字
- 剑指Offer 49 把字符串转换成整数
- 剑指Offer-67:把字符串转换成整数