此題並不複雜,主要是想考做題人思維的嚴密性和**的健壯性,要想寫出完整的正確的**,必須要考慮各種異常的情況,以及設計出足夠多的測試用例以供正確性檢驗,因此可以說也並不簡單,至少剛開始對我來說就是這樣的。
我們主要考慮的是輸入字串引數存在的各種可能性:
1、輸入的字串是正數(』+』)、負數(』-『)和0(』0』);
2、超過最大的正數(2^31-1),小於最小的負數(-2^31);
3、輸入的字串是null、空串、含有非法的字元。
「limits.h」
#define shrt_min (-32768)
#define shrt_max 32767
#define ushrt_max 0xffff
#define int_min (-2147483647 - 1)
#define int_max 2147483647
#define uint_max 0xffffffff
**實現:
#include
#include
using
namespace
std;
//用來標識當前字串是否是合法的數字,是則為,不是為
int tag = 1;
int strtoint(const
char* str)
else
if(*digit == '-')//第乙個字元是-,將minus置為true,表示是負數
const
char* digit = str;
while (*digit != '\0')
++digit;
}else
//如果有非法字元
}if (*digit == '\0')//遍歷到字串結束字元,則說明該字串可以轉為合法的int,則將tag置為
}return (int)num;//返回時強轉為int
}int main()
劍指offer面試題 49 把字串轉化為整型
題目 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空。輸出描述 如果是合法的數值表達則返回該數字,否則返回0。示例1 分析 我們知道大多數情況下越簡單的問題可能越容易出錯,這個題目很多人,包括...
劍指offer 面試題49 醜數
我們把只包含因子2 3 和 5 的數稱作醜數 ugly number 求按照從小到大的順序的第1500個醜數。例如,6 8都是醜數,但是14不是,因為它包含因子7。習慣上我們把1當做第乙個醜數。有空再補上 public class 49 uglynumber return uglynumbers i...
《劍指offer》面試題49 醜數
設計乙個演算法,找出只含素因子2,3,5 的第 n 小的數。符合條件的數如 1,2,3,4,5,6,8,9,10,12 思路 思路1 從1開始遞增,依次判斷每個數是否是醜數,不夠高效 思路2 思路1之所以效率低,比較關鍵的一點是遍歷的每乙個數字都進行醜數判斷。思路2不是去判斷醜數,而是計算出醜數 因...