題目:字符串轉整數
阿新 • • 發佈:2018-06-12
div 字符串轉整數 sta 字符 ptr flag 題目 存儲 返回
這個問題解答的思路跟上個翻轉整數一樣,都是通過long long類型存儲一個結果字符串,然後返回int區域內大小的數字。
這道題我出了好幾次問題,後來才發現是因為沒有仔細讀題,題目只說了去除剛開始遇到的空格而我去除全部了。
我寫出的正確的代碼如下(效率超過了100%):
static const auto io_speed_up = []() { std::ios::sync_with_stdio(false); cin.tie(nullptr); return 0; }(); class Solution { public: int myAtoi(string str) { size_t index= 0; bool flag = false; long long res = 0; while (str[index] == ‘ ‘) ++index; if (str[index] == ‘-‘) { flag = true; ++index; } else if(str[index] == ‘+‘) ++index; while (str[index] >= ‘0‘ && str[index] <= ‘9‘ && res < INT_MAX) { res = res * 10 + str[index] - ‘0‘; ++index; } if (flag) res = -res; if (res > INT_MAX) return INT_MAX; if (res < INT_MIN) return INT_MIN;return (int)res; } };
這道題有一個有意思的地方在於,傳遞的是一個字符串,那麽最後一位即str[str.size()]位一定是一個‘\0‘字符,這個字符必然不會滿足數字字符或者空字符的條件。這意味著我們在做這道題中,只要設置好條件,就不用關心字符串長度的問題(每個循環都會少一次判斷)。
題目:字符串轉整數