8.myAtoi给出一个32位有符号整数,需要将这个整数中每一位的数取反。示例1:输入:"42"输出:42示例2:输入:"-42"输出:-42解释:第一个非空白字符是'-',这是一个减号。我们尝试将负号与后面所有连续的数字组合起来,最后得到-42。示例3:输入:"4193withwords"输出:4193解释:转换在数字'3'处结束,因为它的下一个字符不是数字。示例4:输入:"wordsand987"输出:0解释:第一个非空字符是'w',但它不是数字或加号或减号。因此无法执行有效的转换。示例5:输入:“-91283472332”输出:-2147483648解释:数字“-91283472332”超出了32位有符号整数的范围。因此返回INT_MIN(?231)。1.思路:if判断classSolution{/***@paramString$str*@returnInteger*/functionmyAtoi($str){if(!$str){return0;}$max=pow(2,31)-1;$min=-pow(2,31);$n=strlen($str);$res='';$标志=假;for($i=0;$i<$n;$i++){if($res===''){//匹配第一个字符(只有数字,+,-)if(!$flag&&($str[$i]=='-'||is_numeric($str[$i])||$str[$i]=='+')){$res.=$str[$i];}if($str[$i]!=''){$flag=true;}}else{//匹配后面的字符,只能添加数字,如果不是数字,直接跳出循环if(is_numeric($str[$i])){$res.=$str[$i];}else{休息;}}}if(!$res){返回0;}//判断是否超过最大整数,但需要做一些处理防止异常try{$res=(int)$res;}Catch(异常$e){返回0;}if($res>$max){返回$max;}if($res<$min){返回$min;}返回$res;}}
