สมมติว่าเรามีตัวเลข n เราต้องตรวจสอบว่าเราสามารถสร้างสตริงตัวพิมพ์เล็กตามตัวอักษรจากตัวเลขนั้นได้หรือไม่ และตรวจสอบว่าสตริงนั้นเป็น palindrome หรือไม่ ที่นี่เราจะใช้เฉพาะอักขระจาก a ถึง j, [a =0, b =1... j =9] ดังนั้นหากตัวเลขคือ 42 สตริงย่อย "ec" จะถูกพิมพ์จนถึง 6 (4+2) อักขระ "ececec" ให้ตรวจสอบว่านี่คือ palindrome หรือไม่
ดังนั้น หากอินพุตเป็น n =43 เอาต์พุตจะเป็น True สตริงจะเป็น "ededede" และนี่คือ palindrome
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- temp :=สตริงว่าง
- s :=n เป็นสตริง
- ตัวอักษร :=อักขระทั้งหมดจาก a ถึง j
- ผลรวม :=0
- substr :=สตริงว่าง
- สำหรับฉันในช่วง 0 ถึงขนาด s - 1 ทำ
- d :=s[i] เป็นตัวเลขหลัก
- substr :=substr เชื่อมตัวอักษร[d]
- sum :=sum + d
- ในขณะที่ขนาดของอุณหภูมิ <=ผลรวม ทำ
- temp :=temp concatenate substr
- temp :=temp[จากดัชนี 0 ถึงผลรวม - 1]
- คืนค่า จริง เมื่อ temp เป็น palindrome มิฉะนั้น จะเป็นเท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def isPalindrome(s): return s == s[::-1] def solve(n): temp = "" s = str(n) letters = "abcdefghij" sum = 0 substr = "" for i in range(len(s)) : d = int(s[i]) substr += letters[d] sum += d while len(temp) <= sum: temp += substr temp = temp[:sum] return isPalindrome(temp) n = 43 print (solve(n))
อินพุต
43
ผลลัพธ์
True