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

2021-08-03 10:48:51 字數 1336 閱讀 1804

題目:

將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是乙個合法的數值則返回0 

輸入描述:

輸入乙個字串,包括數字字母符號,可以為空。
輸出描述:

如果是合法的數值表達則返回該數字,否則返回0。
示例1

分析:

我們知道大多數情況下越簡單的問題可能越容易出錯,這個題目很多人,包括我自己一下子就做出來了,不到十行的**就問你虛不虛?可是,當我們

把很多特殊情況即測試用例都考慮進去的時候,卻不是一件很容易的事情。

至少能把空指標null、空字串"",正負號、溢位等問題的測試用例考慮進去並在寫**的時候對這些特殊的輸入都定義好合理的輸出。當然,這些輸出並不一定要和atoi完全保持一致,但必須要有顯式的說明,和面試官溝通好,

即你的各種情況下的定義輸出代表什麼意思

參考**即vs完整測試**如下:

#include #include using namespace std;

long long startstrtoint(string s, bool minus, int i)

//cout << 0x80000000 << endl; //輸出2147483648

//cout << (signed int)0x80000000 << endl; //輸出-2147483648

i++;

} else

}return num;

} int strtoint(string str)

else if (str[i] == '-')

if (str[i] != '\0')

num = startstrtoint(str, minus, i);

} return num;

}int main()

參考**

class solution 

else if(str[i]=='-')

if(str[i]!='\0')

num=startstrtoint(str,minus,i);

}return num;

}long long startstrtoint(string s,bool minus,int i)

i++;

}else

}return num;

}

};

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

此題並不複雜,主要是想考做題人思維的嚴密性和 的健壯性,要想寫出完整的正確的 必須要考慮各種異常的情況,以及設計出足夠多的測試用例以供正確性檢驗,因此可以說也並不簡單,至少剛開始對我來說就是這樣的。我們主要考慮的是輸入字串引數存在的各種可能性 1 輸入的字串是正數 負數 和0 0 2 超過最大的正數...

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