問題
考察
与えられた文字列は全部で何種類あるかという問題です。ただし、文字列を逆さから見ると他の文字列と一致したという場合であったとしても、それらは同一の文字列と見なす必要があるようです。重複を許さず、文字列が何種類あるかを数えるには、set
やmap
といった重複を許さない集合・辞書配列などを使用するのが便利です。これらに文字列を順に挿入して、最終的にサイズがいくつになったかを出力してみましょう。「文字列が逆さでも同一とみなす」については下記の処置を行うことで対応できます。
- 各文字列、逆さの場合の文字列を事前に用意しておく。
- 各文字列、通常の場合と逆さから見た場合とで、辞書順でどちらが前に来るかを比較
- C++の場合、2つの文字列を
min
関数に渡せば求めることができます。
- C++の場合、2つの文字列を
- より前に来る方を採用し、
set
またはmap
に挿入する
提出コード(コンテスト後)
ご不明点などがあれば教えていただけると幸いです。