欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写(力扣)

程序员文章站 2024-03-15 17:28:18
...

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写(力扣)

#include <iostream>
#include <string>
using namespace std;


//给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
class Solution 
{
public:
    bool isPalindrome(string s) 
    {
        s = toLowerCase(s);   //全部变为小写
        int start = 0;
        int end = s.size() - 1;

        bool flag = true;
        while (start < end)
        {
            if (s[start] != s[end])
            {
                return false;
            }
            start++;
            end--;
        }
        return flag;
    }

    string toLowerCase(string s)
    {
        string ret = "";
        for (int i = 0; i < s.size(); i++)
        {
            if ('A' <= s[i] && s[i] <= 'Z')
            {
                s[i] += ('a' - 'A');
                ret += s[i];
            }
			else if (('a' <= s[i] && s[i] <= 'z') || ('0' <= s[i] && s[i] <= '9'))
			{
				ret += s[i];
			}
        }

        return ret;
    }
};

int main()
{
    string s1 = "A man, a plan, a canal: Panama";
    Solution s;
    bool flag = s.isPalindrome(s1);
    cout << flag << endl;

    string s2 = "0P";
    flag = s.isPalindrome(s2);
    cout << flag << endl;
    return 0;
}