Valid Palindrome
2016-02-25 17:02
489 查看
package cn.edu.xidian.sselab.string;
import java.awt.datatransfer.StringSelection;
/**
*
* @author zhiyong wang
* title: Valid Palindrome
* content:
* 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.
*
*/
public class ValidPalindrome {
//这个题很多地方一开始没有想到,调试出了许多错误:
//1.没有注意到字符串里面有很多不是字母或者数字,如果是不是字母或者数字,要跳过他们,不管他们
//2.内部两个循环,第一落下了start小于end的约束条件,第二忘记把if改成while循环
//3.比较的时候忘记了还有大小写的情况,数字、字母都可以调用toLowerCase
public boolean isPalindrome(String s){
if(s == null) return false;
int len = s.length();
if(s.isEmpty()) return true;
int start = 0;
int end = len - 1;
while(start < end){
while(start < end && !Character.isLetterOrDigit(s.charAt(start)))
start++;
while(start < end && !Character.isLetterOrDigit(s.charAt(end)))
end--;
if(start < end && Character.toLowerCase(s.charAt(start)) != Character.toLowerCase(s.charAt(end)))
return false;
start++;
end--;
}
return true;
}
}
import java.awt.datatransfer.StringSelection;
/**
*
* @author zhiyong wang
* title: Valid Palindrome
* content:
* 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.
*
*/
public class ValidPalindrome {
//这个题很多地方一开始没有想到,调试出了许多错误:
//1.没有注意到字符串里面有很多不是字母或者数字,如果是不是字母或者数字,要跳过他们,不管他们
//2.内部两个循环,第一落下了start小于end的约束条件,第二忘记把if改成while循环
//3.比较的时候忘记了还有大小写的情况,数字、字母都可以调用toLowerCase
public boolean isPalindrome(String s){
if(s == null) return false;
int len = s.length();
if(s.isEmpty()) return true;
int start = 0;
int end = len - 1;
while(start < end){
while(start < end && !Character.isLetterOrDigit(s.charAt(start)))
start++;
while(start < end && !Character.isLetterOrDigit(s.charAt(end)))
end--;
if(start < end && Character.toLowerCase(s.charAt(start)) != Character.toLowerCase(s.charAt(end)))
return false;
start++;
end--;
}
return true;
}
}
相关文章推荐
- Pavilion M4-1016TX 加装固态硬盘(SSD)+UEFI+GPT安装WIN8.1
- iOS 移除所有子视图
- 字符串搜索算法总结
- 运行时runtime
- 极光推送的使用步骤
- 我理解的三个范式
- PHP基础
- HTTP协议(一):介绍
- struts2导出excel笔记
- Matlab中的静态(持久)变量和全局变量
- Objective-C中,遍历数组的四种方法
- HTTP协议初探
- as3 反向for循环测试总结
- shell获取 linux 系统的位数
- java中设置虚拟机最大内存
- iOS开发之提交App前需要准备的材料
- CGRidCtrl控件 学习心得
- lighttpd-1.4.39 : state machine
- Android插件化开发 第四篇 [加载插件Activity]
- C# Process运行cmd命令的异步回显