作者所注明的特殊情况是存在的,但似乎他的处理方法并不正确。
若前一位也是"w",则这句话并未起到作用。
正解应是在下面模拟时,若遇到非"w"的字符,则将原字符("w")更新为该字符。
如下:
while(l>=0){
if(L=='w'&&a[l]!='w') L=a[l];
if(a[l]==L||a[l]=='w') tmp++;
else break;
l--;
}
while(r<(n<<1)){
if(R=='w'&&a[r]!='w') R=a[r];
if(a[r]==R||a[r]=='w') tmp++;
else break;
r++;
}