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

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


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

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

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • nums :=รายการใหม่

  • k :=สตริงว่าง

  • สำหรับฉันในช่วง 0 ถึงขนาด s ทำ

    • ถ้า ASCII ของ s[i]> 47 และ ASCII ของ s[i] <58 แล้ว

      • k :=k เชื่อม s[i]

    • มิฉะนั้น

      • ถ้า k ไม่ใช่สตริงว่าง ดังนั้น

        • แทรกรูปแบบจำนวนเต็มของ k ที่ส่วนท้ายของ nums

        • k :=สตริงว่าง

  • ถ้า k ไม่ใช่สตริงว่าง ดังนั้น

    • แทรกรูปแบบจำนวนเต็มของ k ที่ส่วนท้ายของ nums

  • ส่งคืนจำนวนองค์ประกอบที่แตกต่างกันใน 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