lintcode 415有效回文串(Java)
来源:互联网 发布:手机版弘历软件 编辑:程序博客网 时间:2024/06/07 10:14
题目
1.题目
给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。
2.注意事项
你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。
3.例子
在这个题目中,我们将空字符串判定为有效回文。
样例
“A man, a plan, a canal: Panama” 是一个回文。
“race a car” 不是一个回文。
解法1
解法分析:
首先我们要将字符串s中的非字母数字元素剔除,用到了Character.isLetter(c),Character.isDigit(c)分别判断是否是字母、数字,Character.isLetterOrDigit(c) 判断是否是字母或数字;
然后将获得的字符串转为小写,并转成char[];
最后进行遍历判断。
public class Solution { /** * @param s A string * @return Whether the string is a valid palindrome */ public boolean isPalindrome(String s) { StringBuffer buffer = new StringBuffer(); for (char c : s.toCharArray()){ //判断是否是字母或者数字 if (Character.isLetterOrDigit(c)){ buffer.append(c); } } //转成全是小写的char数组 char[] chars = buffer.toString().toLowerCase().toCharArray(); int n = chars.length; //遍历到一半就行 for (int i = 0; i < n/2; i++){ if (chars[i] != chars[n - i - 1]){ return false; } } return true; }}
解法2
进一步分析:本题目是典型的使用对撞指针的题目,上面的解法并没有很好的使用这一点,只是单纯的重新筛选组合,相比来讲,下面的这个更好。
public class Solution { /** * @param s A string * @return Whether the string is a valid palindrome */ public boolean isPalindrome(String s) { s = s.toLowerCase(); char[] chars = s.toCharArray(); for(int i = 0, j = s.length() - 1; i < j; i++, j--){ while (Character.isLetterOrDigit(chars[i]) == false && i<j) { i++; } while (Character.isLetterOrDigit(chars[j]) == false && i<j) { j--; } if (chars[i] != chars[j]){ return false; } } return true; }}
题目地址:http://www.lintcode.com/zh-cn/problem/valid-palindrome/
阅读全文
0 0
- lintcode 415有效回文串(Java)
- LintCode : 有效回文串
- LintCode-有效回文串
- lintcode --有效回文串
- 有效回文串,lintcode
- lintcode:有效回文串
- 有效回文串-LintCode
- lintcode-有效回文字符串
- Java实现-有效回文串
- lintcode刷题--回文串
- LintCode- 分割回文串
- LintCode:回文串
- LintCode:分割回文串
- 分割回文串-LintCode
- LintCode 最长回文串
- lintcode:最长回文串
- 最长回文串-LintCode
- LintCode算法题解——岛屿个数、有效回文串、最长上升子序列
- 状态栏字体颜色改变
- tcp窗口滑动以及拥塞控制
- 插入排序算法
- 总结-maven-新建web项目
- php7 curl上传文件
- lintcode 415有效回文串(Java)
- 声优陪聊技术支持
- Android ExpandableListView使用小结(二)
- 文章索引~ubuntu
- MySQL基本语句
- NSURLRequest 各种缓存类型说明
- 六、事件处理
- git clone下载速度很慢的解决方法
- FragmentStatePagerAdapter 和 FragmentPagerAdapter 对比