ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมค้นหา anagram ทั้งหมดภายในสตริงหนึ่ง
ตัวอย่าง
Input: anagram = "cat" string = "tacghactcat" Output: Anagram at 0 Anagram at 5 Anagram at 7 Anagram at 8
อัลกอริทึม
1. กำหนดสตริง 2 ตัว 2. สร้างฟังก์ชันตรวจสอบว่า 2 สตริงเป็น anagram กันหรือไม่ 3. วนลูปผ่านสตริงหลักที่ต้องการค้นหา 3.1 ตรวจสอบว่า substring เป็น anagram หรือไม่ด้วยฟังก์ชันที่สร้าง 3.1.1 ถ้าเป็นจริง ให้พิมพ์ดัชนีเริ่มต้น
โค้ดตัวอย่าง
# importing collections to check for anagrams
import collections
# initializing two strings
anagram = 'cat'
string = 'tacghactcat'
# function to check for anagrams
def is_anagram(string):
# checking for anagram
if collections.Counter(anagram) == collections.Counter(string):
# returning True if anagrams
return True
else:
# returning False if not
return False
# getting lengths of both strings
anagram_len = len(anagram)
string_len = len(string)
# iterating through the string
for i in range(string_len - anagram_len + 1):
# checking for anagram
if is_anagram(string[i:i+anagram_len]):
# printing the index
print(f'Anagram at {i}')ผลลัพธ์
หากรันโปรแกรมข้างต้น จะได้ผลลัพธ์ดังนี้:
Anagram at 0 Anagram at 5 Anagram at 7 Anagram at 8
สรุป
หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น