最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java題解Leetcode 8字符串轉(zhuǎn)換整數(shù)

 更新時(shí)間:2023年06月15日 16:26:29   作者:尹學(xué)姐  
這篇文章主要為大家介紹了java題解Leetcode 8字符串轉(zhuǎn)換整數(shù)實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目要求

請(qǐng)你來(lái)實(shí)現(xiàn)一個(gè) myAtoi(string s) 函數(shù),使其能將字符串轉(zhuǎn)換成一個(gè) 32 位有符號(hào)整數(shù)(類似 C/C++ 中的 atoi 函數(shù))。

函數(shù) myAtoi(string s) 的算法如下:

  • 讀入字符串并丟棄無(wú)用的前導(dǎo)空格
  • 檢查下一個(gè)字符(假設(shè)還未到字符末尾)為正還是負(fù)號(hào),讀取該字符(如果有)。 確定最終結(jié)果是負(fù)數(shù)還是正數(shù)。 如果兩者都不存在,則假定結(jié)果為正。
  • 讀入下一個(gè)字符,直到到達(dá)下一個(gè)非數(shù)字字符或到達(dá)輸入的結(jié)尾。字符串的其余部分將被忽略。
    將前面步驟讀入的這些數(shù)字轉(zhuǎn)換為整數(shù)(即,"123" -> 123, "0032" -> 32)。如果沒(méi)有讀入數(shù)字,則整數(shù)為 0 。必要時(shí)更改符號(hào)(從步驟 2 開始)。
  • 如果整數(shù)數(shù)超過(guò) 32 位有符號(hào)整數(shù)范圍 [−2^31, 2^31 − 1] ,需要截?cái)噙@個(gè)整數(shù),使其保持在這個(gè)范圍內(nèi)。具體來(lái)說(shuō),小于 −2^31 的整數(shù)應(yīng)該被固定為 −2^31 ,大于 2^31 − 1 的整數(shù)應(yīng)該被固定為 2^31 − 1 。
  • 返回整數(shù)作為最終結(jié)果。

注意:

  • 本題中的空白字符只包括空格字符 ' ' 。
  • 除前導(dǎo)空格或數(shù)字后的其余字符串外,請(qǐng)勿忽略 任何其他字符。

示例 1:

輸入:s = "42"
輸出:42

示例 2:

輸入:s = " -42"
輸出:-42

示例 3:

輸入:s = "4193 with words"
輸出:4193

提示:

  • 0 <= s.length <= 200
  • s 由英文字母(大寫和小寫)、數(shù)字(0-9)、' '、'+'、'-' 和 '.' 組成

解題思路

這道題用簡(jiǎn)單的模擬法來(lái)解。

主要步驟如下:

  • 借助trim方法,去除s前后的空格
  • 判斷s的第一位元素,是否為+和-,從而得到結(jié)果是正數(shù)還是負(fù)數(shù)
  • 循環(huán)遍歷s中的所有數(shù)字
    • 先判斷加上當(dāng)前數(shù)字是否會(huì)越界,如果會(huì)越界,則直接返回Integer.MAX_VALUE或Integer.MIN_VALUE
    • 計(jì)算res值
    • index++
  • 返回正負(fù)號(hào)標(biāo)記位 * res

Java代碼

class Solution {
    public int myAtoi(String s) {
        s = s.trim();
        int index = 0, flag = 1, res = 0;
        if (index < s.length() && (s.charAt(index) == '+' || s.charAt(index) == '-')) {
            flag = s.charAt(index++) == '+' ? 1 : -1;
        }
        while(index < s.length() && Character.isDigit(s.charAt(index))){
            int digit = s.charAt(index) - '0';
            if(res > (Integer.MAX_VALUE - digit) / 10){
                return flag == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            }
            res = res * 10 + digit;
            ++index;
        }
        return flag * res;
    }
}

總結(jié)

這道題就用模擬法的方式來(lái)解,就好了,核心是如何判斷越界。不能在計(jì)算完res值之后再判斷越界,要在計(jì)算res值之前判斷是否越界。

以上就是java題解Leetcode 8字符串轉(zhuǎn)換整數(shù)的詳細(xì)內(nèi)容,更多關(guān)于java題解字符串轉(zhuǎn)換整數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

西青区| 蓝田县| 延边| 宁陵县| 白城市| 资阳市| 清镇市| 陇南市| 延寿县| 大同县| 新源县| 乌审旗| 翁牛特旗| 浪卡子县| 辽阳县| 盈江县| 腾冲县| 建德市| 右玉县| 渝北区| 永州市| 将乐县| 卢龙县| 夹江县| 牡丹江市| 汽车| 贡山| 霍山县| 凯里市| 温州市| 肇庆市| 台湾省| 丹寨县| 涞水县| 哈尔滨市| 绿春县| 页游| 垫江县| 城口县| 台中县| 麦盖提县|