码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 之 Valid Palindrome

时间:2015-07-22 13:24:12      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:字符串   string   回文字符串   

【问题描述】

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.


1.【基础知识】
回文字符串是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
2.【屌丝代码】

class Solution {
public:
    bool isPalindrome(string s) 
	{
        int m(0);
		char a[100]={'0'};
		if(s.size()==0)
			return true;
		for(int k =0;k<s.length();k++)
		{
			if((s[k]<='z'&&s[k]>='a')||(s[k]>='A'&&s[k]<='Z'))
				a[m++] = s[k];
		}
		a[m] = '\0';
		int i(0),j(strlen(a)-1);
		while(j>i)
		{
			if((a[i]!=a[j])&&(a[i]-a[j]!=32)&&(a[i]-a[j]!=-32))
				return false;
				i++;
				j--;
		}
		return true;
    }
};
3.【AC源码】

class Solution {
public:
bool isPalindrome(string s) {
transform(s.begin(), s.end(), s.begin(), ::tolower);
auto left = s.begin(), right = prev(s.end());
while (left < right) {
if (!::isalnum(*left)) ++left;
else if (!::isalnum(*right)) --right;
else if (*left != *right) return false;
else{ left++, right--; }
}
return true;
}
};

4.【复盘】

1.considering only alphanumeric characters and ignoring cases 理解为回文的约束为字符且忽略其大小写,没考虑到数字,导致直接实现存在问题;

2.transform 用法详见文章 简单的程序诠释C++ STL算法系列之十八:transform http://blog.csdn.net/jerryjbiao/article/details/7523110

3.auto关键字auto对象和变量被存储在栈中,它的生命周期仅存在于它的声明所在的块(block)中。在块中定义的块如果不加其它的修饰符则都是auto类型的。auto关键字可以省去。auto对象和变量对外部模块都是不可见的。

详见:C/C++中涉及存储方式的关键字:auto,static,register,extern

4.int isalnum ( int c );//检查字符是否是字母或者数字。

详见:isalnum <ctype.h> <cctype>

详址:http://blog.csdn.net/snowdream86/article/details/6889276
5.定义函数:int tolower(int c);
文件:#include <stdlib.h>;函数说明:若参数 c 为大写字母则将该对应的小写字母返回。

详见 :tolower

详址:http://blog.csdn.net/Michaelwubo/article/details/41080495

6.思想小结


版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode 之 Valid Palindrome

标签:字符串   string   回文字符串   

原文地址:http://blog.csdn.net/u013630349/article/details/46998327

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!