标签:
实现atoi这个函数, public int atoi(String str),传入字符串str可以返回整数,请仔细考虑一下字符串的各种情况!
String to Integer: Case分析
Sample:”123”,”0”,”1” ,"-1"
Sample: "000","001","-001"
Sample: " -123", " +123", "-123", "+123","--123","++123"," -004500"
Sample: " 123","123 123","123 "
Sample: "*123","*abc","~123","123~", "a123","12a3", "12+3","12-3"
Sample: string.Empty,null,""," "
Sample: "-2147483648","2147483647"
Sample: "-214748364800","214748364700"
Snapshot:
Source Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StringtoInteger { class Program { static void Main(string[] args) { string[] str = { string.Empty,null,""," ", "0","1","123","000","001","-1","-001", " 123","123 123","123 ", " -123", " +123", "-123", "+123","--123","++123"," -004500", "*123","*abc","~123","123~", "a123","12a3", "12+3","12-3", "-2147483648","2147483647", "-214748364800","214748364700" }; StringtoInteger(str); } public static void StringtoInteger(string[] str) { Console.WriteLine("StringtoInteger Result is:"); foreach (string s in str) { Console.Write("Test Data:{0}", s); Console.WriteLine(" Result:{0}", StringtoInteger(s)); } } public static int StringtoInteger(string str) { int sign = 0; int i = 0; int result = 0; if (string.IsNullOrEmpty(str)) { return result; } while (i < str.Length && ((str[i] >= ‘0‘ && str[i] <= ‘9‘) || str[i] == ‘ ‘ || str[i] == ‘-‘ || str[i] == ‘+‘)) { if ((result == 0 && sign == 0) && str[i] == ‘ ‘) { i++; } else if (str[i] == ‘+‘ && sign == 0) { sign = 1; i++; } else if (str[i] == ‘-‘ && sign == 0) { sign = -1; i++; } else if (str[i] >= ‘0‘ && str[i] <= ‘9‘) { if (result > (int.MaxValue - (str[i] - ‘0‘)) / 10) { if (sign == 0 || sign == 1) return int.MaxValue; return int.MinValue; } result = result * 10 + str[i] - ‘0‘; i++; } else { if (sign == 0) return result; return result * sign; } } if (sign == 0) return result; return result * sign; } } }
标签:
原文地址:http://www.cnblogs.com/binyao/p/5026406.html