if ((isupper(a[i]) == isupper(a[i+1])) || (islower(a[i]) ==islower(a[i+1]))) tmp++;
int ans = 0;
tmp = -1; //記錄用的起點
for(int i = 0; i < c.size(); i++)
{
if(c[i] == k)
{
if(tmp == -1) tmp = i; // 第一次遇到k
//如果 tmp !=-1那代表已經在區間繼續走下去了
}
else
{
if(tmp!=-1)
{
int len = i - tmp; // 區間長度
//判斷左右擴張
if(tmp > 0 && c[tmp - 1] >k) len++; // 向左擴張
if (i <c.size() && c[i] > k) len++; // 向右擴張
//刷新答案
ans = max(ans, len);
//重置 找下一區間
tmp = -1;
}
}
}
第三步 收尾最後搞一下
if (tmp != -1)
{
int len = c.size() - tmp;
if (tmp > 0 && c[tmp - 1] > k) len++;
if(c.back() > k) len++;
ans = max(ans, len);
}
最後一步 列印
//ans 只有紀錄幾段而已,而每一段都是k個字
cout << ans*k;