SORU
24 EKİM 2008, Cuma


Nasıl bir dize kontrol etmek için bir palindrom düzenli ifadeler kullanarak?

Bu cevap mümkün olduğu röportaj bir soruydu

Nasıl bir dize kontrol etmek için bir palindrom düzenli ifadeler kullanarak?

p.s. "How to check if the given string is palindrome?" ve farklı dillerde cevap veriyor, ama düzenli ifadeler kullanan cevap. soru zaten yok

CEVAP
29 EKİM 2008, ÇARŞAMBA


Bu sorunun cevabı "imkansız". Daha spesifik olarak, görüşmeci eğer hesaplama teorisi sınıfında dikkat eğer merak ediyor.

Hesaplama teorisi sınıf sonlu durum makineleri öğrendim. Sonlu durum makinesi düğümler ve kenarlar oluşur. Her kenar sonlu bir alfabenin bir harfi ile açıklamalı. Bir veya daha fazla düğüm" düğüm ve düğüm "düğüm. başlangıç "kabul özel Her harf olarak verilen bir kelime okunur biz traverse makineye verilen kenarı. Biz kabul bir devlet ise o zaman makine" kelime. "kabul eder ki

Düzenli ifade her zaman eşdeğer sonlu durum makinesine çevrilebilir. Ve düzenli ifade olarak aynı kelimeleri kabul eder veya reddeder o gerçek dünyada, bazı regexp dilleri keyfi fonksiyonlar için izin, bu sayılmaz).

İmkansız palindromes kabul eden sonlu durum makinesi kurmak için. Kanıt kolay düğüm, yani dize keyfi büyük bir sayı gerektiren bir dize inşa gerçeklere dayanır

x b^x (örn., bir^ aba, aabaa,,, .... aaabaaa aaaabaaaa)

x x bir kere tekrarlanan bir^. Bu en az x, 'b' x kez geri sayım için bir palindrom olduğunu emin olmalıyız. gördükten sonra düğümler gerektirir

Son olarak, geri orijinal soruya başlarken, bazı sonlu sabit uzunluk daha küçük olan tüm palindromes kabul eden bir düzenli ifade yazabilirsiniz görüşmeci söyleyebilirsin. Eğer orada hiç bir gerçek dünya uygulama gerektirir belirlenmesi palindromes sonra neredeyse kesinlikle vardır keyfi olarak uzun olanlar, böylece bu cevap gösteriyor ki ayırt teorik imkansızlıklar gerçek dünya uygulamaları. Yine de, gerçek regexp oldukça uzun, eşdeğer 4 satırı programı çok daha uzun (okuyucu için kolay egzersiz: palindromes tanımlayan bir program yazmak) olur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boburnham

    boburnham

    11 Temmuz 2006
  • Justin Case

    Justin Case

    3 EKİM 2011
  • Ralph Phillips

    Ralph Philli

    5 Aralık 2006