件名の説明:
(Integer.valueOf返す0(文字列)の機能を達成するが、文字列はデジタルの要件を満たしていない)文字列を整数に変換し、要求はライブラリ関数を使用することができない整数文字列を変換します。0または文字列の値が0の有効な値ではありませんが返されます。
アイデアは:厳密さを考えて検討し、メインの質問は、次の点に注意してください。
(1)空の文字列のポインタかどうか、文字列の長さは0です。
(2)具体的に考慮される正および負の文字列は、正の数の有無にかかわらず正の数で検討します。
(3)符号ビット文字以外のすべてが数文字であることを確認すると、そうでない場合は0と9と0の間でなければなりません。
class Solution {
public:
int StrToInt(string str) {
int len = str.length();
if(len == 0)
return 0;
int s = (str[0] == '-' ? -1:1); //记录符号正负
int i = ((str[0] == '-')||(str[0] == '+')?1:0); //看字符串前有符号没有
long long result = 0;
for(;i<len;i++){
if(str[i]>='0' && str[i]<='9') //只有每一个单个字符都在0~9之间才合理,否则返回0
result = result*10 + str[i]-'0';
else
return 0;
}
return result*s; //乘以符号位
}
};