Dize arama algoritması, daha büyük bir metinde(dize) belirli bir modelin(alt dize) oluşumlarını bulmak için kullanılır. Bu algoritma, metin işleme, arama ve değiştirme görevlerinde çok önemli bir rol oynar.
Nasıl çalışır
- Aranacak bir metin(dize) ve bir kalıp(alt dize) ile başlayın.
- Metin boyunca her seferinde bir karakter yineleyin.
- Metindeki her karakter için, kalıbın ilk karakteriyle karşılaştırın.
- Bir eşleşme varsa, sonraki karakterlerin de kalıpla eşleşip eşleşmediğini kontrol edin.
- Model tamamen eşleşirse, eşleşmenin başlangıç konumunu kaydedin.
- Metinde kalıbı aramaya devam edin.
Örnek
Bir metin düşünün: "ababcababcabcabc" Ve bir kalıp: "abc"
- 0 konumundan başlayın. "a"yı modeldeki ilk "a" karakteriyle karşılaştırın.
- Eşleşme bulundu, sonraki karakterlere geçin: "b" ile "b" ve "a" ile "c".
- Eşleştirmeye devam edin: "b" ile "a", "a" ile "b" ve "b" ile "c".
- Maç 2. pozisyonda başarısız oldu.
- 3. konumdan yeniden başlayın. "a"yı modeldeki ilk "a" karakteriyle karşılaştırın.
- Başarılı eşleştirme: "a" ile "a", "b" ile "b" ve "c" ile "c".
- Kayıt konumu 3.
"abc" modeli 0, 6 ve 9 konumlarında bulunur.
C++'da Örnek Kod
Bu örnekte stringSearch
işlev, "abc" kalıbının "ababcababcabcabc" metni içinde geçtiği yerleri bulmak için kullanılır. Sonuç, maçların başlangıç konumlarını içeren bir vektör olacaktır.