题目
代码
class Solution {
public:
bool isCircle(string word) {
int begin = 0;
int end = word.length();
int mid = (begin + end) / 2;
for(int i = 0; i < mid; i++) {
if(word[i] != word[end - i - 1])
return false;
}
return true;
}
vector<vector<int>> palindromePairs(vector<string>& words) {
vector<vector<int>> result;
int size = words.size();
if(size == 0) return result;
unordered_map<string, int> hash_map;
for(int i = 0; i < size; i++) {
hash_map[words[i]] = i;
}
for(int i = 0; i < words.size(); i++) {
string reverse_str = words[i];
reverse(reverse_str.begin(), reverse_str.end());
for(int j = 0; j <= reverse_str.length(); j++) {
string sub_str1 = reverse_str.substr(0, j);
string sub_str2 = reverse_str.substr(j, reverse_str.length());
if(j && isCircle(sub_str1) && hash_map.count(sub_str2) && hash_map[sub_str2] != i) {
result.push_back({i, hash_map[sub_str2]});
}
if(isCircle(sub_str2) && hash_map.count(sub_str1) && hash_map[sub_str1] != i) {
result.push_back({hash_map[sub_str1], i});
}
}
}
return result;
}
};