LeetCode - 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.

题意:

判断当前字符串是否为回文,只考虑字母数字字符而忽略大小写。

字符串为空也为true

 

解题思路:

首先回文是指 正是这个字符串,置反后也是这个字符串, 如 “level” 和上面的 “amanaplanacanalpanama”也就是回文。 

那么理解回文是啥意思后,这题就容易了 ,从前后直接比较每个字符串是否相等就行。

这里可以用前后两个指针,也可以使用栈来解题。

 

代码:

	 public boolean isPalindrome(String s) {
		 Stack<Character> stack = new Stack<Character>();
		 
		 //过滤空格和非单词字符,将其替换为"",同时将字符串转为小写
		 String str = s.replaceAll("\\W", "").toLowerCase();
		 
		 //将字符入栈
		 for(int i =0;i<str.length();i++) {
			 stack.push(str.charAt(i));
		 }
		 
		 for(int i=0;i<str.length();i++) {
			 char ch = stack.pop();
			 if(ch != str.charAt(i)) {
				 return false;
			 }
		 }
		 return true;
	 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值