題目連結:
題目意譯:
你被給定一個代表一個正整數的字串 number 以及一個字元 digit。
回傳有著十進位制下最大值的結果字串,其為藉由著從 number 中移除一個 digit 而得來。測資之生成滿足 digit 出現於 number 中至少一次。
限制:
2 ≦ number.length ≦ 100
number 由數字 '1' 到 '9' 組成。
digit 為 '1' 到 '9' 的一個數字。
digit 至少於 number 中出現一次。
範例測資:
範例 1:
輸入: number = "123", digit = "3"
輸出: "12"
解釋: "123" 中只有一個 '3'。移除掉 '3' 之後,其結果為 "12"。
範例 2:
輸入: number = "1231", digit = "1"
輸出: "231"
解釋: 我們可以移除第一個 '1' 而得到 "231",或者可以移除第二個 '1' 而得到 "123"。
由於 231 > 123,我們回傳 "231"。
範例 3:
輸入: number = "551", digit = "5"
輸出: "51"
解釋: 我們可以從 "551" 中隨便移除第一個或第二個 '5'。
兩者結果都會得到字串 "51"。
解題思維:
因為字串的長度最長也才 100 個字元,而且我們只需(正確來說是「必須」)移除一個 digit 所在的位數。所以可以直接掃過一次 number 然後窮舉看看要移除掉哪一次的 digit。看哪個最小即是所求。
而如果字串長度很長且可以移除若干個 digit 時,則需要參考
這題的結論(但是記得本題只能移除特定的 digit,所以結論不能照抄)。這方面交給有興趣的讀者思考。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。