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

java中字符串轉(zhuǎn)整數(shù)及MyAtoi方法的實(shí)現(xiàn)

 更新時(shí)間:2017年05月17日 11:14:26   投稿:lqh  
這篇文章主要介紹了java中字符串轉(zhuǎn)整數(shù)及MyAtoi方法的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下

java中字符串轉(zhuǎn)整數(shù)及MyAtoi方法的實(shí)現(xiàn)

       該題雖然和我們正常使用的字符串轉(zhuǎn)整數(shù)的API中函數(shù)不一致,但是通過增加了很多額外的邊界或者異常處理,可以鍛煉算法思維的敏銳性和處理邊界異常等問題的能力。


思路:字符串題一般考查的都是邊界條件、特殊情況的處理。所以遇到此題一定要問清楚各種條件下的輸入輸出應(yīng)該是什么樣的。

這里已知的特殊情況有:

  • 能夠排除首部的空格,從第一個(gè)非空字符開始計(jì)算
  • 允許數(shù)字以正負(fù)號(hào)(+-)開頭
  • 遇到非法字符便停止轉(zhuǎn)換,返回當(dāng)前已經(jīng)轉(zhuǎn)換的值,如果開頭就是非法字符則返回0
  • 在轉(zhuǎn)換結(jié)果溢出時(shí)返回特定值,這里是最大/最小整數(shù)

先來幾組測(cè)試用例:

"  010"
"  +004500"
" -001+2a42"
"  +0 123"
"-2147483648"
"2147483648"
"  - 321"
"   -11919730356x"
"9223372036854775809"

以上的測(cè)試用例對(duì)應(yīng)的正確輸出如下:

10
4500
-1
0
-2147483648
2147483647
0
-2147483648
2147483647

Java實(shí)現(xiàn)代碼如下:

public static int myAtoi(String str) { 
    if(str==null||str.length()==0) 
      return 0; 
    char[] array = str.toCharArray(); 
    long result = 0; // 要返回的結(jié)果result 
    int count = 0; // 記錄‘+'或者‘-'出現(xiàn)的次數(shù) 
    int num = 0;  // 判斷空格出現(xiàn)的位置 
    int flag = 1; // 正數(shù)還是負(fù)數(shù) 
    for (int i = 0; i < array.length; i++) { 
      Character c = array[i]; 
      if(c>='0'&&c<='9'){ 
        result = result*10+c-'0'; 
        // 判斷是否溢出 
        if(flag==1&&result>Integer.MAX_VALUE){ 
          return Integer.MAX_VALUE; 
        }else if(flag==-1&&-result<Integer.MIN_VALUE) 
          return Integer.MIN_VALUE; 
        num++; 
      }else if(c==' '&&num==0&&count==0) 
        continue; 
      else if(c=='+'&&count==0){ 
        count = 1; 
      } 
      else if(c=='-'&&count==0){ 
        flag = -1; 
        count = 1; 
      } 
      else{ 
        return (int) (flag*result); 
         
      } 
    } 
    return (int) (flag*result); 
  } 

在上邊的代碼中,for循環(huán)遍歷數(shù)組中,判斷某個(gè)char是否是數(shù)字,可以使用Character.isDigit(c)方法,計(jì)算result時(shí),可以使用Character.getNumericValue(c)方法來得到某個(gè)char類型的數(shù)值,總之就是可以很方便的使用Character里邊的靜態(tài)方法。

重寫的for循環(huán)如下:

for (int i = 0; i < array.length; i++) { 
      Character c = array[i]; 
      if(Character.isDigit(c)){ 
        result = result*10+Character.getNumericValue(c); 
        if(flag==1&&result>Integer.MAX_VALUE){ 
          return Integer.MAX_VALUE; 
        }else if(flag==-1&&-result<Integer.MIN_VALUE) 
          return Integer.MIN_VALUE; 
        num++; 
      }else if(Character.isSpaceChar(c)&&num==0&&count==0) 
        continue; 
      else if(c=='+'&&count==0){ 
        count = 1; 
      } 
      else if(c=='-'&&count==0){ 
        flag = -1; 
        count = 1; 
      } 
      else{ 
        return (int) (flag*result); 
         
      } 
    } 

        當(dāng)面試時(shí)被問到這個(gè)題,我們可以不慌不亂的和面試官親切交談,制定該函數(shù)的一些規(guī)則,即如何處理異常輸入等,之后,再遍歷數(shù)組,根據(jù)需求進(jìn)行相應(yīng)的異常處理哦~

       感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • deepseek本地部署及java、python調(diào)用步驟詳解

    deepseek本地部署及java、python調(diào)用步驟詳解

    這篇文章主要介紹了如何下載和使用Ollama模型,包括安裝JDK?17及以上版本和Spring?Boot?3.3.6,配置pom文件和application.yml,創(chuàng)建Controller,以及使用Python調(diào)用模型,需要的朋友可以參考下
    2025-02-02
  • SpringBoot中ClientAbortException: Broken pipe異常解決及優(yōu)化方案

    SpringBoot中ClientAbortException: Broken pipe異常解決及優(yōu)

    這篇文章主要介紹了如何解決 Spring Boot 中的 ClientAbortException: Broken pipe 異常及優(yōu)化方案,異常發(fā)生在 Spring Boot 項(xiàng)目中,表示客戶端與服務(wù)端的 HTTP 請(qǐng)求連接被中斷,接下來由小編給大家介紹一下出現(xiàn)這個(gè)問題的原因,需要的朋友可以參考下
    2024-12-12
  • 修改idea運(yùn)行內(nèi)存大小的方法總結(jié)

    修改idea運(yùn)行內(nèi)存大小的方法總結(jié)

    在開發(fā)過程中,總會(huì)遇到idea運(yùn)行內(nèi)存不足,所以本文小編給大家介紹了修改idea運(yùn)行內(nèi)存大小的兩種方法,文中通過圖文給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Spring Boot自定義錯(cuò)誤視圖的方法詳解

    Spring Boot自定義錯(cuò)誤視圖的方法詳解

    這篇文章主要介紹了Spring Boot自定義錯(cuò)誤視圖的方法詳解,需要的朋友可以參考下
    2020-08-08
  • JavaWeb入門:ServletContext詳解和應(yīng)用

    JavaWeb入門:ServletContext詳解和應(yīng)用

    這篇文章主要介紹了Java ServletContext對(duì)象用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Java中ArrayList刪除的常用操作及方法

    Java中ArrayList刪除的常用操作及方法

    ArrayList是最常用的一種java集合,在開發(fā)中我們常常需要從ArrayList中刪除特定元素,本文主要介紹了Java中ArrayList刪除的常用操作及方法,感興趣的可以了解一下
    2023-11-11
  • Spring?cache源碼深度解析

    Spring?cache源碼深度解析

    緩存用于提升系統(tǒng)的性能,特別適用于一些對(duì)資源需求比較高的操作,下面這篇文章主要給大家介紹了關(guān)于Spring?cache源碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Spring?Cloud灰度部署實(shí)現(xiàn)過程詳解

    Spring?Cloud灰度部署實(shí)現(xiàn)過程詳解

    這篇文章主要為大家介紹了Spring?Cloud灰度部署實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 使用Jenkins來構(gòu)建GIT+Maven項(xiàng)目的方法步驟

    使用Jenkins來構(gòu)建GIT+Maven項(xiàng)目的方法步驟

    這篇文章主要介紹了使用Jenkins來構(gòu)建GIT+Maven項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • java實(shí)現(xiàn)短信通信的完整教程

    java實(shí)現(xiàn)短信通信的完整教程

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)短信通信的完整教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評(píng)論

启东市| 沙河市| 黄陵县| 双辽市| 泸州市| 鹿泉市| 信宜市| 井陉县| 宁河县| 吉首市| 江孜县| 和硕县| 通州市| 巴彦淖尔市| 华坪县| 邵阳市| 孙吴县| 娄烦县| 博乐市| 衡南县| 广丰县| 马公市| 惠州市| 绥中县| 乌拉特前旗| 大邑县| 义乌市| 库尔勒市| 乌审旗| 辽源市| 禹城市| 德格县| 永定县| 元阳县| 朝阳县| 晴隆县| 孝义市| 昌乐县| 波密县| 普兰店市| 剑阁县|