[LeetCode125]Valid Palindrome

题目来源:https://leetcode.com/problems/valid-palindrome/     原题地址

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

解题思路:

    本题需要注意的地方

忽略字母大小写,字母数字判断,注意字母中的字母大小写转换(把大写加32全部转化为小写)

要注意空字符串也是回文的,面试经常会问到

考虑使用额外空间情况,可以复制一个数组一个指前一个指后。

下面代码没有占用另外字符串存储,效率要高。

class Solution{
public:
	bool isPalindrome(string s){
		if (s.size() == 0)
			return true;  //空字符串 也是回文串
		int i = 0, j = s.size() - 1;
		while (i < j){
			if (!(isVaild(s[i]))){
				++i;
			}
			else if(!(isVaild(s[j]))){
				--j;
			}
			else if (s[i] != s[j]){
				return false;
				break;
			}
			else{
				i++;
				--j;
				
			}
			
		}

        return true;

	}
private:
	bool isVaild(char &c){
		if (c >= 'a' && c <= 'z'){
			return true;
		}
		else if (c >= 'A'&&c <= 'Z'){
			c = c + 'a' - 'A';
			return true;
		}
		else if (c >= '0'&& c <= '9'){
			return true;
		}
		return false;
	}
};

注意:以后写好代码后,必须要去leetcode上验证,样例,不然有些小问题没考虑


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值