uacs2024

导航

leetcode 1750. 删除字符串两端相同字符后的最短长度

1750. 删除字符串两端相同字符后的最短长度

注意审题,是相同的字符,而不是相同的字符串。所以对于 abcccab 来说就是输出7

class Solution {
public:
    int minimumLength(string s) {
        int left = 0,right = s.size()-1;
        while(left < right){
            if(s[left] != s[right])  return right-left+1;
            while(s[left] == s[left+1] && left + 1 != right)  ++left;
            while(s[right] == s[right-1] && left + 1 != right)  --right; 
            ++left;--right;
        }
        if(left + 1 == right && s[left] == s[right])  return 0;
        return right-left+1;
    }
};

题解:进一步优化

class Solution {
public:
    int minimumLength(string s) {
        int left = 0,right = s.size()-1;
        while(left < right && s[left] == s[right]){
            char temp = s[left];
            while(left <= right && s[left] == temp)  ++left;
            while(left <= right && s[right] == temp)  --right;
        }
        return right-left+1;
    }
};

 

posted on 2024-12-12 20:54  ᶜʸᵃⁿ  阅读(16)  评论(0)    收藏  举报