LeetCode_1805_title.jpg

 

題目連結

題目大致上就是會給由小寫英文和數字組成的一個長度介於 1~1000 的字串

計算由英文字母間隔開的數字有幾種

 


 

刷題歷程:

1. 最一開始恨直覺的把數字的區段轉成整數後做紀錄

    做到一半就想到值域的問題所以果斷放掉這一條路

2. 基本上把數字區段截出來之後一樣把他當字串來比較就好

    剩下就是怎麼去紀錄過去出現的字串和當下的數字字串是否相同

3. 我自己是稍微做了以下的一些調整

    a. 紀錄出現過的數字字串改成紀錄數字字串在原字串起始點和長度

        起始點和長度是數字字串紀錄當下可以同時紀錄的資訊

    b. 當下數字字串要往前比較實先確認長度一樣再逐一比較字元

    上面兩個應該多多少少都比直覺的暴力法優化了一丁點

4. 大致架構其實就像上面一樣單純

    只是一些細節的地方一直是我自己寫程式的弱點

    像是 0 也是一個數字,不同位數的 0 都視為相同的 0

    或是一些分類的判斷都還是不夠細膩來回細條了好幾次

 


 

問題紀錄:

1. 一開始光在輸入字串就卡關了 xD

    大致上是 scanf("%c", xxx); 這邊換行符也會被判斷成一個輸入字元

    所以我一開始想要逐一輸入字元的方法直接卡關

    網路上有很多解法我自己隨意試了兩個

    a. scanf 的 %c 前面加一個空白來清掉前一次的換行符

        這個方法我個人是覺得有點土砲所以後來放棄了

    b. 使用 %s 來截取整個字串

        滿直覺的後來採用這個

2. 字元符請用單引號不要用雙引號

    現在工作 python 寫多了完全忘記這回事

 


 

LeetCode_1805.jpg

arrow
arrow
    文章標籤
    C Leetcode 1805
    全站熱搜

    傻呆哥 發表在 痞客邦 留言(0) 人氣()