解题思路: (前后指针)
使用左、右指针分别指向字符串头部和尾部,每次
1. 先判断两个指针的值是否相同,不同则直接返回最短长度
2. 相同则左指针右移,右指针左移,将当前所有相同的字符去掉,直到指到下一个不同的元素位置,又返回第1步进行判断。
3.注意返回值是0的情况。最终两个指针指向同一处 ,下标相同 值相同。
class Solution {
public:
int minimumLength(string s)
{
int size = s.size();
int begin = 0 ,end = size-1;
while(begin < end)
{
if(s[begin] != s[end])
{
break;
}
char ch = s[begin];
while(begin < end && s[begin] == ch) //找到下一个不为ch的字符
{
++begin;
}
while(begin < end && s[end] == ch)
{
--end;
}
if(begin == end && s[begin] == ch) //返回值为0 的情况
return 0;
}
return end - begin + 1;
}
};