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

โปรแกรมหาจำนวนจำนวนเต็มที่ต่างกันในสตริงด้วย Python


สมมติว่าเรามีสตริง alphanumeric ตัวพิมพ์เล็ก s เราต้องแทนที่ทุกตัวอักษรที่ไม่ใช่ตัวเลขด้วยช่องว่าง แล้วเราจะได้จำนวนเต็มบางจำนวนที่คั่นด้วยช่องว่างอย่างน้อยหนึ่งช่อง หาจำนวนจำนวนเต็มที่ต่างกันหลังทำการแทนที่ สองตัวเลขถือว่าต่างกันถ้ารูปแบบทศนิยมโดยไม่มีศูนย์นำหน้าต่างกัน

เช่น s = "ab12fg012th5er67" ผลลัพธ์คือ 3 เพราะมีตัวเลข ["12", "012", "5", "67"] โดย "12" และ "012" ต่างกันในสตริงแต่เท่ากันเป็นจำนวนเต็ม ดังนั้นมี 3 ค่าที่ต่างกัน

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

  • nums = [], k = ""
  • วนลูป i จาก 0 ถึง len(s)-1:
    • ถ้า ASCII ของ s[i] อยู่ระหว่าง 48-57 (คือ '0'-'9'): k += s[i]
    • มิฉะนั้น: ถ้า k ไม่ว่าง: ใส่ int(k) เข้า nums, k = ""
  • ถ้า k ไม่ว่าง: ใส่ int(k) เข้า nums
  • คืนค่าจำนวน unique ใน nums (len(set(nums)))

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

def solve(s):
    nums = []
    k = ""
    for i in range(len(s)):
        if ord(s[i]) > 47 and ord(s[i]) < 58:
            k += s[i]
        else:
            if k != "":
                nums.append(int(k))
                k = ""
    if k != "":
        nums.append(int(k))
    return len(set(nums))

s = "ab12fg012th5er67"
print(solve(s))

ข้อมูลเข้า

"ab12fg012th5er67"

ข้อมูลออก

3