สมมติว่าเรามีสองสตริง s และ t เราต้องตรวจสอบว่าเราสามารถสร้าง t ได้โดยสลับอักขระของ s หรือไม่
ดังนั้น หากอินพุตเป็น s ="worldlloeh" t ="helloworld" ผลลัพธ์จะเป็น True เนื่องจากเราสามารถสลับอักขระจาก "worldlloeh" ให้เป็น "helloworld" ได้
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- s_len :=ขนาดของ s, t_len :=ขนาดของ t
- ถ้า s_len ไม่เหมือนกับ t_len แล้ว
- คืนค่าเท็จ
- freq :=แผนที่สำหรับเก็บอักขระทั้งหมดและความถี่ใน s
- สำหรับฉันในช่วง 0 ถึง t_len ทำ
- ความถี่[t[i]] :=ความถี่[t[i]] - 1
- ถ้า freq[t[i]] <0 แล้ว
- คืนค่าเท็จ
- คืนค่า True
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
from collections import defaultdict def solve(s, t): s_len = len(s) t_len = len(t) if (s_len != t_len): return False freq = defaultdict(int) for char in s : freq[char] += 1 for i in range(t_len) : freq[t[i]] -= 1 if freq[t[i]] < 0: return False return True s = "worldlloeh" t = "helloworld" print(solve(s, t))
อินพุต
"worldlloeh", "helloworld"
ผลลัพธ์
True