leetcode 1750. 删除字符串两端相同字符后的最短长度
题目如下
数据范围
示例
本题是普通的模拟题,只需要设置l r两个指针并且让两个指针不断向内遍历最后得到差值即可,不用真正修改字符串s。
通过代码
class Solution {
public:
int minimumLength(string s) {
int l = 0,r = s.size() - 1;
int n = r + 1;
char t;
if(r == 0)return 1;
if(s[l] != s[r])return r + 1;
t = s[0];
while(true){
while(true){
if(l + 1 == r)return 0;
if(s[l + 1] == t)l++;
else break;
}
while(true){
if(l + 1 == r)return 0;
if(s[r - 1] == t)r--;
else break;
}
if(s[l + 1] != s[r - 1])return r - l - 1;
l++;r--;
if(l == r)return 1;
t = s[l];
}
return 0;//while 循环已经是全部情况了 其实程序走不到这里
}
};