机试题 - 消除字符串中字符的最大个数
给一个字符串,字符串首尾相同可以消掉,字符串内部相邻的字符相同也可以删去,问最多能删掉几个字符
例:“nbabn”,首尾相同可以删除n,删完b也相同也可以删掉,最多能删除4个
思路:贪心思想,当首尾能删掉时优先删除,不能删时再去删除内部相邻字符,删除内部时要多次检测首尾
int res = 0; string helper1(string s){ int low = 0; int high = s.size()-1; int t = 0; while(s[low]==s[high]){ low++; high--; res += 2; t++; } return s.substr(t, s.size()-2*t); } string helper2(string s){ int n = s.size(); for(int i=0;i<n;i++){ if(i<n-1 && s[i]==s[i+1]){ return s.substr(0,i-1) + s.substr(i+2, n-(i+2)); } } return s; } int function(string mystring){ string str = helper1(mystring); string str2 = helper2(str); while(str!=str2){ str = helper1(str2); str2 = helper2(str); } return res; }