牛客oj:把字串轉換成整數牛客oj九度oj:
github**: 049-把字串轉換成整數
csdn題解:劍指offer–049-把字串轉換成整數
九度oj
csdn題解
github**
049-把字串轉換成整數
1508-把字串轉換成整數
劍指offer–049-把字串轉換成整數
049-把字串轉換成整數
相同題目 leetcode題解–8. string to integer (atoi)題目描述
將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。樣例輸入
1a33樣例輸出-2147483648
-2147483648
同樣的題目在leetcode上簡單問題,如下**即是主要框架相同題目 leetcode題解–8. string to integer (atoi)
for (; *str != '\0'; str++)
else
}
但是需要注意的問題,
// 排除前導的空格
while (*str == ' ' || *str == '\n' || *str == '\t') // 排除前導的空格
// 判斷符號位+ -
if (*str == '+')
else
if (*str == '-')
我的解決方案是在迴圈的過程中,只要一發生溢位就結束
// 解決over_flow的問題
// int_max 2147483647
// int_min -2147483648 minus = true
if((minus == true && value > (unsigned long)(int_max) + 1) // 負數絕對值最大為int_max + 1
|| (minus == false && value > int_max)) // 正數最大值為int_max
如果最後再判斷可能出現的問題,因為不管我們value用什麼儲存,long,long long,他們都有表示範圍,都存在溢位,字串過長時都會溢位,溢位後可能會發生截斷,或者甚至讀取成乙個負數,那麼我們迴圈結束後再判斷就不可行。
分析的已經很好了,我們直接上**吧
#include
using
namespace
std;
// 除錯開關
#define __tmain main
#ifdef __tmain
#define debug cout
#else
#define debug 0 && cout
#endif // __tmain
class solution
bool minus = false;
// 判斷符號位+ -
if (*pstr == '+')
else
if (*pstr == '-')
long
long
int value = 0;
for (; pstr != str.end( ); pstr++)
// 解決over_flow的問題
// int_max 2147483647
// int_min -2147483648 minus = true
if((minus == true && value > (unsigned
long)(int_max) + 1) // 負數絕對值最大為int_max + 1
|| (minus == false && value > int_max)) // 正數最大值為int_max
}if(pstr != str.end( ))
else
if (value >= int_max)
else
if (value <= int_min)
return (int)value;}}
};int __tmain(void)
其中因此value * 10 -=> (value << 1) + (value << 3)
*pstr - '\0' -=> *pstr & 0xf
可以用如下**代替value *= 10;
value += *pstr - '0';
value = (value << 1) + (value << 3) + (*pstr & 0xf); //value = value*10+(*pstr-『0』);
劍指offer 把字串轉成整數
時間限制 1秒 空間限制 32768k 熱度指數 259483 本題知識點 字串 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入乙個字串,包括數字字母符號,可以為空如果是合法的數值表達則返回該數字,否則返回0示例1 2147483647 ...
劍指offer 字串
問題描述 class solution auto res temp.c str strcpy str,res strcpy 關於c 中string和char 的區別參考 問題描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0...
劍指offer 字串
問題描述 function replacespace str 問題描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含 0 次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a...