题目描述
大佬解题(+代码解释)
using System;
using System.Text.RegularExpressions;
public class Solution {
public int MyAtoi(string str) {
str = Regex.Match(str.Trim(), @"^[+-]?\d+").ToString();①
bool t_IsParse = int.TryParse(str, out int o_Num);②
if (t_IsParse) {
return o_Num;
}
else {
if (string.IsNullOrEmpty(str)) {
return 0;
}
else {
if (str[0] == '-') {
return -2147483648;
}
else {
return 2147483647;
}
}
}
}
}
①str = Regex.Match(str.Trim(), @"1?\d+").ToString();
知识点:.Trim()、正则表达式Regex.Match()
·str.Trim()
功能:Trim从外向内删除空白符,直到碰到一个非空白的字符为止。
public string Trim()
{
return this.TrimHelper(WhitespaceChars, 2);
}
0 删除左边 1删除右边 其他(2) 删除两边
·正则表达式
@"2?\d+":±必选出现在首,且只能出现一次或不出现,0~9可出现多次
^:随后的模式必须位于字符串的开始位置,如果是一个多行字符串,则必须位于行首。对于多行文本(包含回车符的一个字符串)来说,需要设置多行标志
?:匹配前面的字符0次或1次
[ ]:括号中的任一字符
\d:从0-9的任一数字
+:匹配前面的字符0次或多次
②bool t_IsParse = int.TryParse(str, out int o_Num);
经过正则表达式筛选后的字符串str是否可以转化为整数,可以的话说明为整数,否,则数字中则为null或越界