package leetcode.string; /* * @description: 8.åç¬¦ä¸²è½¬æ¢æ´æ° (atoi) * @param: å符串,å 许å¼å¤´ä¸ºç©ºæ ¼,å¯è½å å«å ¶ä»å符 * @return: å符串转æ¢åçæ´æ°,å¦æè¶ è¿32æç¬¦å·æ´æ°çæå¼,å°±è¿åæå¼ * @author: cp * @date: 2020/8/3 */ public class MyAtoi { public int myAtoi(String str) { int start = 0; int result = 0; int tmpResult = 0; int invalidResult = 0; int positive = 1; int l = str.length(); //é¦å å»é¤ç©ºæ ¼ for (; start < l; start++) { if (str.charAt(start) != ' ') break; } if (start == l) { return invalidResult; } //夿é¦ä½æ¯ä¸æ¯ç¬¦å· int firstChar = str.charAt(start); if (firstChar == '+') { start++; positive = 1; } else if (firstChar == '-') { start++; positive = -1; } else if (firstChar < '0' || firstChar > '9') { return invalidResult; } for (; start < l; start++) { char c = str.charAt(start); //ææå符串 if (c >= '0' && c <= '9') { tmpResult = tmpResult * 10 + (c - 48);//asciiç //æº¢åºæ åµ if (result != 0 && tmpResult / result < 10) { if (positive == 1) { return Integer.MAX_VALUE; } else { return Integer.MIN_VALUE; } } result = tmpResult; } else { //æ æå符串 break; } } return positive * result; } }