สมมติว่าเราได้รับจำนวนเต็มบวกสองจำนวน n และ d โดยที่ d เป็นตัวเลขภายใน 0 ถึง 9 เราต้องกำหนดจำนวนครั้งที่ตัวเลข d ปรากฏภายในตัวเลขจำนวนเต็มระหว่าง 1 และ n.
ดังนั้น หากอินพุตเป็น n =45, d =5 ผลลัพธ์จะเป็น 5
ตัวเลขเหล่านี้มีหลัก 5:[5, 15, 25, 35, 45].
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดฟังก์ชัน Solve() นี่จะใช้ n และ d เป็นอินพุต
-
ถ้า n <0 แล้ว
-
คืนค่า 0
-
-
k :=ชั้นของ (n /10) − 1
-
ตอบ :=แก้ (k, d) * 10 + k + 1
-
ถ้า d เท่ากับ 0 แล้ว
-
ans :=ans − 1
-
-
m :=ชั้นของ (n / 10) * 10
-
ในขณะที่ m <=n ทำ
-
ans :=ans + จำนวนครั้งของการแสดงสตริงของ d ในการแสดงสตริงของ m
-
m :=m + 1
-
-
กลับมาอีกครั้ง
-
จากฟังก์ชันหลัก ตอนนี้เรียกใช้ฟังก์ชัน −
-
ค่า :=แก้ (n,d)
-
พิมพ์(ค่า)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, n, d): if n < 0: return 0 k = n // 10 − 1 ans = self.solve(k, d) * 10 + k + 1 if d == 0: ans −= 1 m = n // 10 * 10 while m <= n: ans += str(m).count(str(d)) m += 1 return ans ob = Solution() print(ob.solve(45,5))
อินพุต
45, 5
ผลลัพธ์
5