把字串轉換成整數(Java實現)
本題為劍指offer面試題49
牛客網測試地址::https://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e
- 時間限制:1秒空間限制:32768K
將一個字串轉換成一個整數,要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是一個合法的數值則返回0
輸入描述:
輸入一個字串,包括數字字母符號,可以為空
輸出描述:
如果是合法的數值表達則返回該數字,否則返回0
輸入例子:
+2147483647 1a33
輸出例子:
2147483647 0
package go.jacob.day519;
/*
* [程式設計題]把字串轉換成整數
* 三個易錯點:
* 1.考慮異常輸入;
* 2.異常輸入和'0'的返回值都為0,應該設定一個全域性變數來區分;
* 3.判斷字串輸入的第一位是不是正負號;
* 4.考慮整數的上下溢位。Integer.MAX_VALUE (2^31-1) Integer.MIN_VALUE(-2^31)
*
* 關於判斷是否溢位的問題
* 本人認為java熱門第一判斷是否溢位是錯誤的,舉個反例
* 當輸入為value=2147483648時,在計算機內部的表示應該是-2147483648
* 顯然value>Integer.MAX_VALUE是不成立的
*
*/
public class Demo2 {
public static void main(String[] args) {
String str = "-2147483648";
System.out.println(StrToInt(str));
System.out.println(flag);
}
// 設定一個全域性變數,來判斷:當輸出為0時,是字串輸入異常還是輸入字串為'0'
public static boolean flag;
public static int StrToInt(String str) {
flag = false;
//判斷輸入是否合法
if (str == null || str.trim().equals("")) {
flag = true;
return 0;
}
// symbol=0,說明該數為正數;symbol=1,該數為負數;start用來區分第一位是否為符號位
int symbol = 0;
int start = 0;
char[] chars = str.trim().toCharArray();
if (chars[0] == '+') {
start = 1;
} else if (chars[0] == '-') {
start = 1;
symbol = 1;
}
int result = 0;
for (int i = start; i < chars.length; i++) {
if (chars[i] > '9' || chars[i] < '0') {
flag = true;
return 0;
}
result = result * 10 + (int) (chars[i] - '0');
System.out.println("1:" + result);
/*
* 本人認為java熱門第一判斷是否溢位是錯誤的,舉個反例
* 當輸入為value=2147483648時,在計算機內部的表示應該是-2147483648
* 顯然value>Integer.MAX_VALUE是不成立的
*/
if ((symbol == 0 && result < 0) || (symbol == 1 && result < 0 && result > Integer.MIN_VALUE)) {
flag = true;
return 0;
}
}
// 注意:java中-1的n次方不能用:(-1)^n .'^'異或運算
// 注意,當value=-2147483648時,value=-value
result = (int) Math.pow(-1, symbol) * result;
return result;
}
}
相關文章
- JZ-049-把字串轉換成整數字串
- 劍指offer——把字串轉換成整數C++字串C++
- python實現字串轉換整數Python字串
- 力扣 - 劍指 Offer 67. 把字串轉換成整數力扣字串
- 《Leetcode of December》劍指 Offer 67. 把字串轉換成整數LeetCode字串
- 字串轉換整數(atoi)字串
- 轉換成為整數
- 劍指offer(Java版)--將字串轉換為整數Java字串
- String to Integer (atoi) 字串轉換整數 (atoi)字串
- 用Java實現samza轉換成flinkJava
- 2020-11-13整數轉換為字串 字元反轉字串字元
- Java Stram實現Map和字串之間互相轉換| BaeldungJava字串
- 如何把PDF轉換成EXCELExcel
- C 語言整數與字串的相互轉換介紹字串
- 詳解 LeetCode_007_整數反轉(Java 實現)LeetCodeJava
- InputStream流轉換成String字串字串
- 位運算實現整數與位元組陣列轉換陣列
- JavaScript字串轉換數字JavaScript字串
- LeetCode-8. 字串轉整數 (atoi)LeetCode字串
- 如何用Python把pdf轉換成wordPython
- Java 浮點到字串轉換Java字串
- JZ-071-把數字翻譯成字串字串
- Java物件轉換成MapJava物件
- 把 .xyz 檔案轉換成 .ply 檔案
- 怎麼把圖片文字轉換成word?
- 轉換成浮點數
- java 字串與檔案相互轉換Java字串
- ppt轉換word文件怎麼操作 把ppt轉換成word純文字
- 格式轉換分享:怎麼把mp4轉換成mp3?
- 如何把 VIM 整成 IDEIDE
- JavaScript 字串轉換數值型別JavaScript字串型別
- Thymeleaf將字串轉換為數字字串
- scala常用操作-Tuple元祖轉換成String字串字串
- Java實現emf轉jpg png 圖片轉換Java
- 用手機怎麼把圖片轉換成PDF
- 小程式把圖片轉換成base64
- 用Python實現阿拉伯數字轉換成中國漢字Python
- 把HTML轉成PDF的4個方案及實現方法HTML
- win10 pdf怎麼轉換成word_win10如何把pdf轉換成word文件Win10