Leetcode-验证回文串

29.验证回文串

题目内容:

代码及思路:

1.在字符串左右两边设置两个指针,一次进行比较

2.由于不考虑大小写,因此我将字符串里的字母统一换成了小写以便进行判断

class Solution {
public:
    void transform(string& s)
    {
	    for (int i = 0; s[i]; i++)
	    {
		    if (s[i] >= 'A'&&s[i] <= 'Z')
			      s[i] += 32;
	    }
    }
    bool Testpalindrome(string s)
    {
	//设置左右两个指针进行比较
	    transform(s);
	    int left = 0;
	    int right = s.length() - 1;
	    while (left < right)
	    {
		//因为只考虑子母河数字字符,且可以忽略子母的大小写,则对字符范围进行划分
		    if (!(s[left] >= 'a'&&s[left] < 'z' || s[left] >= '0'&&s[left] <= '9'&&left < right))
			    left++;
		    else if (!(s[right] >= 'a'&&s[right] < 'z' || s[right] >= '0'&&s[right] <= '9'&&left < right))
			    right--;
		    else if (s[left] != s[right])
			    return false;
		    else
		    {
			    left++;
			    right--;
		    }
	    }
        return true;
    }
    bool isPalindrome(string s) {
	    return Testpalindrome(s);
    }
};

猜你喜欢

转载自blog.csdn.net/larklili/article/details/89373549