题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647 1a33
输出
2147483647 0
剑指offer答案:
- public class Solution {
- public int StrToInt(String str) {
- char result[] = str.toCharArray();
- int sum=0;
- int j=0;int base=1;boolean flag = true;
- for(int i=0;i<str.length();i++)
- {
- if(result[i]>='0' && result[i]<='9')
- {
- sum = sum*10+(result[i] - 48);
- }else if(result[i]=='+'){
- flag = true;
- continue;
- }else if(result[i]=='-'){
- flag = false;
- }else{
- return 0;
- }
- }
- System.out.println(flag?sum:sum*(-1));
- return flag?sum:sum*(-1);
- }
- }
本机测试;
- package pratice715;
- public class StringToInt715 {
- /**
- * 题目描述:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),
- * 要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
- */
- public static int StrToInt(String str) {
- char result[] = str.toCharArray();
- int sum=0;
- int j=0;int base=1;boolean flag = true;
- for(int i=0;i<str.length();i++)
- {
- if(result[i]>='0' && result[i]<='9')
- {
- sum = sum*10+(result[i] - 48);
- }else if(result[i]=='+'){
- flag = true;
- continue;
- }else if(result[i]=='-'){
- flag = false;
- continue;
- }else{
- return 0;
- }
- }
- System.out.println(flag?sum:sum*(-1));
- return flag?sum:sum*(-1);
- }
- public static void main(String[] args) {
- char a = '0';
- char b = '9';
- byte c = (byte)a;
- String str = "-2147483647";
- StrToInt(str);
- char result[] = str.toCharArray();
- int array[] = new int[str.length()];
- int j=0;
- for(int i=0;i<str.length();i++)
- {
- if(result[i]>='0' && result[i]<='9')
- {
- array[j++] = result[i] - 48;
- }else if(result[i]=='+' || result[i]=='-'){
- continue;
- }else{
- break;
- }
- }
- for(int i=0;i<array.length;i++)
- {
- System.out.println("result: "+array[i]);
- }
- System.out.println(b);
- }
- }
扫码关注一起随时随地学习!!!就在洋葱攻城狮,更多精彩,等你来!!