Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาตัวเลขตัวที่สองที่ใหญ่ที่สุดในสตริงด้วย Python


สมมติว่าเรามีสตริง alphanumeric s เราต้องหาตัวเลขตัวที่สองที่ใหญ่ที่สุดที่ปรากฏใน s ถ้าไม่มีให้คืน -1

เช่น s = "p84t3ho1n" ผลลัพธ์คือ 4 เพราะตัวเลขที่มีคือ [1,3,4,8] ตัวที่สองใหญ่สุดคือ 4

ขั้นตอนการแก้ปัญหา

  • lst = set()
  • วนลูปแต่ละ let ใน s:
    • ถ้า let ไม่ใช่ตัวอักษร (คือตัวเลข): ใส่ int(let) เข้า lst
  • ถ้า len(lst) ≤ 1: คืน -1
  • คืนค่าตัวที่สองจากท้ายหลังเรียง lst (sorted(lst)[len(lst)-2])

ตัวอย่างโค้ด

def solve(s):
    lst = set()
    for let in s:
        if not let.isalpha():
            lst.add(int(let))
    if len(lst) <= 1:
        return -1
    return sorted(list(lst))[len(lst) - 2]

s = "p84t3ho1n"
print(solve(s))

ข้อมูลเข้า

"p84t3ho1n"

ข้อมูลออก

4