- 回文になるように ? を x か o に置き換えるときの最小コストを求める
- 奇数の長さに対応してないコードに対してチャレンジしようとしたら、問題条件に書いてある通り長さは偶数だぜと言われる orz
class MinCostPalindrome {
public:
int getMinimum(string s, int oCost, int xCost) {
int ans = 0;
REP(i, s.size()/2) {
if(s[i]=='?'&&s[s.size()-i-1]=='?') ans += min(oCost, xCost)*2;
else if(s[i]=='?') ans += s[s.size()-i-1]=='o'?oCost:xCost;
else if(s[s.size()-i-1]=='?') ans += s[i]=='o'?oCost:xCost;
else if(s[i]!=s[s.size()-i-1]) return -1;
}
if(s.size()&1) if(s[s.size()/2]=='?') ans += min(oCost, xCost);
return ans;
}