回文 (palindrome)

回文の定義

左から読んでも右から読んでも同じものを 回文 (palindrome) と呼ぶ

例) abbabababba

注釈

\(abbabababba\) に含まれる回文. ※0文字(\(\varepsilon\)),1文字は省略してあります.
i 1 2 3 4 5 6 7 8 9 10 11
文字 a b b a b a b a b b a
長さ2   b b                
長さ2                 b b  
長さ3     b a b            
長さ3       a b a          
長さ3         b a b        
長さ3           a b a      
長さ3             b a b    
長さ4 a b b a              
長さ4               a b b a
長さ5     b a b a b        
長さ5       a b a b a      
長さ5         b a b a b    
長さ7     b a b a b a b    
長さ9   b b a b a b a b b  
長さ11 a b b a b a b a b b a

Wikipedia(http://ja.wikipedia.org/wiki/%E5%9B%9E%E6%96%87)の定義では

「回文(かいぶん)とは、始めから(通常通り)読んだ場合と終わりから(通常と逆に)読んだ場合とで文字や音節の出現する順番が変わらず、なおかつ、言語としてある程度意味が通る文字列のことで、言葉遊びの一種である。」

なお、仙台市内にある 作並温泉回文の里 として有名である(http://kaibun.sakunami-spa.com/

アルゴリズム

入力として与えられた文字列の中に含まれるすべての回文を列挙する問題

素朴な手法
  • 部分文字列の長さごとに文字列の頭から回文かどうか判定し,回文なら出力.

含まれるpalindromeを出力

text =

参考文献

Gusfield, Dan. "Algorithms on strings, trees, and sequences." ACM SIGACT News 28.4 (1997): 197-198.