สมมติว่าเรามีสตริงตัวอักษรและตัวเลขตัวพิมพ์เล็ก 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