題目:
將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。 數值為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不是去判斷醜數,而是計算出醜數 因...