空间换时间（HashMap实现，近似O(n)，注意遍历时，是向两边扩展并标记已读，以此做剪枝优化)