Skip to content

Commit ee84e8f

Browse files
committed
Time: 4 ms (84.11%), Space: 7.6 MB (75.42%) - LeetHub
1 parent 4f2c4e2 commit ee84e8f

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
private:
3+
bool pal(string s, int i, int j){
4+
for(; i < j; i++, j--){
5+
if(s[i] != s[j])
6+
return 0;
7+
}
8+
return 1;
9+
}
10+
public:
11+
string shortestPalindrome(string s) {
12+
int n = s.size();
13+
vector<int> v(n + 1, 0);
14+
for (int i = 1 ; i <= n ; i++){
15+
v[i] += v[i - 1] + (s[i - 1] - 'a');
16+
}
17+
string ans;
18+
for (int i = n ; i >= 1 ; i--){
19+
if((i % 2 == 0 && v[i/2] == v[i] - v[i/2]) || (i % 2 != 0 && v[i/2] == v[i] - v[i/2 + 1])){
20+
if(pal(s,0,i-1)){
21+
ans = s.substr(i);
22+
reverse(ans.begin(), ans.end());
23+
break;
24+
}
25+
}
26+
}
27+
return ans + s;
28+
}
29+
};

0 commit comments

Comments
 (0)