劍指offer面試題49 把字串轉為整數

2021-08-22 18:14:34 字數 1063 閱讀 3754

此題並不複雜,主要是想考做題人思維的嚴密性和**的健壯性,要想寫出完整的正確的**,必須要考慮各種異常的情況,以及設計出足夠多的測試用例以供正確性檢驗,因此可以說也並不簡單,至少剛開始對我來說就是這樣的。

我們主要考慮的是輸入字串引數存在的各種可能性:

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不是去判斷醜數,而是計算出醜數 因...