- 把原来的序列倒过来。计算最长公共子序列。
- 然后该字符串得长度减去最长公共子序列的长度即可。
#include<bits/stdc++.h>
using namespace std;
char a[1001], b[1001];
int dp[1001][1001];//公共最长子序列
int main(){
string s;
while(cin>>s){
if(s.size()==1){
cout<<0<<endl;
continue;
}
for(int i = 0; i< s.size();i++){
b[i] = s[s.size()-1-i];
}
memset(dp,0,sizeof(dp));////清空数组
for(int i = 1; i<=s.size();i++ ){
for(int j = 1; j<= s.size();j++){
if(s[i-1] == b[j-1]){
dp[i][j] = dp[i-1][j-1]+1;
}else{
dp[i][j] = max(dp[i][j-1],dp[i-1][j]);
}
}
}
cout<<s.size()-dp[s.size()][s.size()]<<endl;
}
return 0;
}