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

การค้นหา Anagram ในสตริงด้วย Python

ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมค้นหา 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

สรุป

หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น