精華區beta Marginalman 關於我們 聯絡資訊
https://reurl.cc/Ejm7aa 1404. Number of Steps to Reduce a Number in Binary Representation to One 給定一串表示二進位數字的字串 你可對此字串進行兩項操作:+1跟/2 請透過兩項操作將字串變成1 回傳將字串變成1的所需步驟數 Example 1: Input: s = "1101" Output: 6 Explanation: "1101" corressponds to number 13 in their decimal representation. Step 1) 13 is odd, add 1 and obtain 14. Step 2) 14 is even, divide by 2 and obtain 7. Step 3) 7 is odd, add 1 and obtain 8. Step 4) 8 is even, divide by 2 and obtain 4. Step 5) 4 is even, divide by 2 and obtain 2. Step 6) 2 is even, divide by 2 and obtain 1. Example 2: Input: s = "10" Output: 1 Explanation: "10" corressponds to number 2 in their decimal representation. Step 1) 2 is even, divide by 2 and obtain 1. Example 3: Input: s = "1" Output: 0 Constraints: 1 <= s.length <= 500 s consists of characters '0' or '1' s[0] == '1' 思路: 模擬 應該有數學解 不過我想不出來 哇哇嗚嗚嗚 Python Code: class Solution: def numSteps(self, s: str) -> int: count = 0 while True: if s == "1": return count if "1" not in s[1:]: return count+len(s)-1 if s[-1] == "1": s = str(bin(int(s,2)+1)[2:]) count += 1 else: s = s[:-1] count += 1 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.156.128 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1716955433.A.C74.html
JIWP: 大師 05/29 12:14
orangeNoob: 別捲了 05/29 14:20
Rushia: JAVA的轉二進位長度太長無法只能用dequeue硬編碼ㄏㄏ 05/29 16:21