力扣125. 验证回文串;力扣443. 压缩字符串

在这里插入图片描述

class Solution {
public:
    bool isPalindrome(string s) {
		if (s.size() == 0)
			return true;
		size_t size = s.size();
		int i = 0;
		int j = size - 1;
		int flag = 0;
		while (i <= j)
		{
			while (i <= j)
			{
				if ('a' <= s[i] && s[i] <= 'z' || 'A' <= s[i] && s[i] <= 'Z' || '0' <= s[i] && s[i] <= '9')
				{
					flag = 1;
					break;
				}
				else
					++i;
			}
			while (i <= j)
			{
				if ('a' <= s[j] && s[j] <= 'z' || 'A' <= s[j] && s[j] <= 'Z' || '0' <= s[j] && s[j] <= '9')
				{
					flag = 1;
					break;
				}
				else
					--j;
			}
		
			if (flag == 1)
			{
				flag = 0;
				if (s[i] == s[j] || s[i] == (s[j] + 32) || s[i] == (s[j] - 32))
				{
					if (('0' <= s[i] && s[i] <= '9') && ('0' > s[j] || s[j] > '9') || ('0' > s[i] || s[i] > '9') && ('0' <= s[j] && s[j] <= '9'))
						return false;
					++i;
					--j;
				}
				else
					return false;
			}
		}
		return true;
	}
};

在这里插入图片描述

class Solution {
public:
    int compress(vector<char>& chars) {
	    size_t size = chars.size();
	    for (auto i = chars.begin(); i != chars.end(); ++i)
	    {
		    int count = 1;
		    auto j = i;
		    while (j + 1 != chars.end() && *j == *(j + 1))
		    {
			    count++;
			    j++;
		    }
		    if (count == 1)
		    {
		    }
		    else
		    {
			    if (count == 2)
				    *(++i) = '2';
			    else
			    {
				    string s = to_string(count);
				    for (int x = 0; x < s.size(); ++x)
				    {
					    *(++i) = s[x];
				    }
				    chars.erase(i + 1, j + 1);
			    }
		    }
	    }
	    return chars.size();
    }
};
发布了245 篇原创文章 · 获赞 28 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43767691/article/details/104110464