把字串轉換成整數(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字串
- 《劍指offer》:[49]把字串轉化成整數字串
- C語言atoi()函式:將字串轉換成int(整數)C語言函式字串
- 大小寫互換-"數字字串"轉換成數字字串
- String to Integer (atoi) 字串轉換整數 (atoi)字串
- 浮點數轉換成字串函式字串函式
- 用VB把數字轉成中文字串 (轉)字串
- Asp.net C# 把 Datatable轉換成JSON 字串ASP.NETC#JSON字串
- 【C語言】編寫一個函式,將一個數字字串轉換成該字串對應的數字(包括正整數、負整數)。C語言函式字串
- 將字串轉換成Bitmap型別 或者 將Bitmap轉換成字串字串型別
- 把普通java專案轉換成maven專案JavaMaven
- javascript將字串轉換為整數程式碼例項JavaScript字串
- C語言中字串與整數的相互轉換C語言字串
- oracle行列轉換-多行轉換成字串Oracle字串
- C++/C:數字轉成字串, 字串轉成數字C++字串
- 如何把PDF轉換成EXCELExcel
- C 語言整數與字串的相互轉換介紹字串
- oracle行列轉換-字串轉換成多列Oracle字串
- oracle行列轉換-多列轉換成字串Oracle字串
- Java Stram實現Map和字串之間互相轉換| BaeldungJava字串
- 位運算實現整數與位元組陣列轉換陣列
- oracle轉換JAVA生成的時間數字串OracleJava字串
- 【劍指offer】字串轉整數字串
- 把WMware VMX格式轉換成OVF
- 2020-11-13整數轉換為字串 字元反轉字串字元
- JavaScript字串轉換數字JavaScript字串
- js把json字串轉成json物件JSON字串物件
- InputStream流轉換成String字串字串
- 字串:怎樣轉換字串為數字型別? (轉)字串型別
- JZ-071-把數字翻譯成字串字串