String to Integer (atoi)失敗

/*

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1

at java.lang.String.substring(String.java:1924)

at Solution.myAtoi(Solution.java:26)

at __DriverSolution__.__helper__(__Driver__.java:4)

at __Driver__.main(__Driver__.java:48)

Last executed input:"? -42"

如果str是空 return 0;

findfirstnonwhite; return 位置或者-1御铃;//函數(shù)中判斷第一個是不是數(shù)字 不是數(shù)字或者‘-’ return -1逼友;

findlastdigit; return 位置霹陡;

去除sub 判斷是否越界歪玲;越界返回最大值赚抡;判斷方法是 設(shè)置一個long類型的變量 ;

*/

class Solution {

? ? public int myAtoi(String str) {

? ? ? ? if(str == null || str.length() == 0) {

? ? ? ? ? ? return 0;

? ? ? ? }


? ? ? ? int firstPos = findFirstNonWhite(str);

? ? ? ? if(firstPos == -1) {

? ? ? ? ? ? return 0;

? ? ? ? }


? ? ? ? int lastPos = findLastDigit(str,firstPos);

? ? ? ? int sign = 1;

? ? ? ? String subStr;

? ? ? ? if(str.charAt(firstPos) == '-'){

? ? ? ? ? ? sign = -1;

? ? ? ? ? ? subStr = str.substring(firstPos + 1, lastPos);

? ? ? ? }else {

? ? ? ? ? ? subStr = str.substring(firstPos, lastPos);

? ? ? ? }


? ? ? ? long num = 0L;

? ? ? ? for(char c : subStr.toCharArray()) {


? ? ? ? ? ? num = num * 10 + (c - '0');

? ? ? ? }

? ? ? ? num = num * sign;

? ? ? ? if(num > Integer.MAX_VALUE) return Integer.MAX_VALUE;

? ? ? ? if(num < Integer.MIN_VALUE) return Integer.MIN_VALUE;


? ? ? ? return (int)num;? ? ?

? ? }


? ? public int findFirstNonWhite(String s) {

? ? ? ? for(int i = 0; i < s.length(); i++) {

? ? ? ? ? ? if(s.charAt(i) == ' '){

? ? ? ? ? ? ? ? continue;

? ? ? ? ? ? }else if(s.charAt(i) == '-' || ('0' <= s.charAt(i) && s.charAt(i) <= '9') || s.charAt(i) == '+') {

? ? ? ? ? ? ? ? return i;

? ? ? ? ? ? }else {

? ? ? ? ? ? ? ? return -1;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return -1;

? ? }


? ? public int findLastDigit(String s, int start) {

? ? ? ? while(start < s.length() &&'0' <= s.charAt(start) && s.charAt(start) <= '9') {

? ? ? ? ? ? start++;

? ? ? ? }

? ? ? ? return start;

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末事秀,一起剝皮案震驚了整個濱河市彤断,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌易迹,老刑警劉巖宰衙,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異睹欲,居然都是意外死亡供炼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門窘疮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袋哼,“玉大人,你說我怎么就攤上這事闸衫√喂幔” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵蔚出,是天一觀的道長弟翘。 經(jīng)常有香客問我,道長骄酗,這世上最難降的妖魔是什么稀余? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮趋翻,結(jié)果婚禮上睛琳,老公的妹妹穿的比我還像新娘。我一直安慰自己踏烙,他們只是感情好师骗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著讨惩,像睡著了一般辟癌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上步脓,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼靴患。 笑死仍侥,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸳君。 我是一名探鬼主播农渊,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼或颊!你這毒婦竟也來了砸紊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤囱挑,失蹤者是張志新(化名)和其女友劉穎醉顽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體平挑,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡游添,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了通熄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唆涝。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖唇辨,靈堂內(nèi)的尸體忽然破棺而出廊酣,到底是詐尸還是另有隱情,我是刑警寧澤赏枚,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布亡驰,位于F島的核電站,受9級特大地震影響嗡贺,放射性物質(zhì)發(fā)生泄漏隐解。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一诫睬、第九天 我趴在偏房一處隱蔽的房頂上張望煞茫。 院中可真熱鬧,春花似錦摄凡、人聲如沸续徽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钦扭。三九已至,卻和暖如春床绪,著一層夾襖步出監(jiān)牢的瞬間客情,已是汗流浹背其弊。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膀斋,地道東北人梭伐。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像仰担,于是被迫代替她去往敵國和親糊识。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容