<LC刷题二>回文字符串判断之leetcode125&234
其他刷题记录见博客首页
1,leecode125 验证回文串
原题:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
实例:
输入: "A man, a plan, a canal: Panama"
输出: true 输入: "race a car"
输出: false
解决:

定义游标i j,i自左向右移动,j自右向左移动,判断字母数字i j是否相等即可
时间复杂度O(n)
空间复杂度O(1)
class Solution {
private boolean isAlphanumeric(char c){
return ((c>='a'&& c<='z')||(c>='A'&&c<='Z')||(c>=''&&c<=''));
}
private boolean isEqualIgnoreCase(char a,char b){
//小写字母a比大写字母A大32
if (a>='A'&& a<='Z') a+=;
if (b>='A'&& b<='Z') b+=;
return a==b;
}
public boolean isPalindrome(String s){
if (s==null||s.length()==) return true;
int i=,j=s.length()-;
for (;i<j;++i,--j){
//判断游标i,j是否为字符或数字,charAt(i)取i位置的字符,放在for循环里,把字符串遍历,取每个字符
while (i<j&&!isAlphanumeric(s.charAt(i))) i++;
while (i<j&&!isAlphanumeric(s.charAt(j))) j--;
//判断每对i,j游标是否相等
if (i<j&&!isEqualIgnoreCase(s.charAt(i),s.charAt(j))){
return false;
}
}
return true;
}
}
2, leetcode234 回文链表
题目:
请判断一个链表是否为回文链表。
实例:
输入: ->
输出: false 输入: ->->->
输出: true
解决:

定义指向当前节点的cur,和指向前一节点的pre,for循环限定执行1/2 length次,由于cur改变指向后单链表就断了,所以把cur.next下一节点存储起来。
cur指向前一节点pre,pre移到cur位置,cur移到next位置,判断长度是否为奇数,否则cur继续移动一位,pre和cur各自向俩头移动进行比较是否相同
(链表中next为指向下一节点的指针)
class Solution {
public boolean isPalindrome(ListNode head) {
int len=;
//反转一半的链表
for (ListNode p=head;p!=null;p=p.next,++len);
ListNode cur =head;
ListNode pre=null;
for (int i=;i<len/;i++) {
ListNode next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
if (len%==) cur=cur.next;
for (;pre!=null&&cur!=null;cur=cur.next,pre=pre.next){
if (cur.val!=pre.val){
return false;
}
}return true;
}
}
<LC刷题二>回文字符串判断之leetcode125&234的更多相关文章
- leecode刷题(31) -- 回文数
leecode刷题(31) -- 回文数 回文数 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输 ...
- C,C++回文字符串判断(字符串指针的用法)
功能:输入一个字符串,判断是否为回文. 主要锻炼指针的用法. 1.C版 #include<stdio.h> int main() { ]; char a; ,flag=; while((a ...
- LeetCode随缘刷题之回文数
package leetcode.day_01_30; /** * 给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . * <p> * 回文数是指正 ...
- CodeForces-2015 HIAST Collegiate Programming Contest-Gym-100952A.水题 100952B.水题 100952C.回文字符串 100952D.杨辉三角处理组合数 其他题目待续。。。
哈哈哈哈哈哈哈,最近一直在补题,改各种错误的代码,wa了20多遍,改到心态爆炸,改好之后,感觉世界都美好了(叉会腰~)... A. Who is the winner? time limit per ...
- leecode刷题(15)-- 验证回文字符串
leecode刷题(15)-- 验证回文字符串 验证回文字符串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 ...
- C#LeetCode刷题之#680-验证回文字符串 Ⅱ(Valid Palindrome II)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3961 访问. 给定一个非空字符串 s,最多删除一个字符.判断是否 ...
- LeetCode 第五题 最长的回文字符串 (JAVA)
Longest Palindromic Substring 简介:字符串中最长的回文字符串 回文字符串:中心对称的字符串 ,如 mom,noon 问题详解: 给定一个字符串s,寻找字符串中最长的回文字 ...
- 判断回文字符串、回文链表、回文数(python实现)
所谓回文字符串,就是正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.即是对称结构 判断回文字符串 方法一: def is_palin ...
- 九度OJ 1192:回文字符串 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3807 解决:1778 题目描述: 给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的. 输入: 输入包括一行字符串 ...
随机推荐
- MyEclipse快捷方式
选择你要注释的那一行或多行代码,按Ctrl+/即可,取消注释也是选中之后按Ctrl+/即可. 如果你想使用的快捷键的注释是的话,那么你的快捷键是ctrl+shift+/我以前都是手动注释的,直接打// ...
- myeclipse生成类的帮助文档
http://blog.csdn.net/tabactivity/article/details/11807233
- Markdown的基本语法
Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不 ...
- 201621123037 《Java程序设计》第7周学习总结
作业06-接口.内部类 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 答: 思维导图: 其他-笔记: 2. 书面作业 1. ArrayList代码分析 1.1 解释Arr ...
- 关于WPS页面横向问题
上图 即可进行横向竖向页面设置
- 探究Android中通过继承ViewGroup自定义控件的原理
原文地址:http://www.cnblogs.com/kross/p/3378395.html 今天断断续续的折腾了一下午到现在20:38,终于有点明白了.o(╯□╰)o 在Android开发中,我 ...
- cat命令和EOF标识输出shell到文件
在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...
- 【转】Base64算法详解
原文链接:https://blog.csdn.net/robertcpp/article/details/51628647 完整的BASE64定义可见RFC 1421和RFC 2045.编码后的数据比 ...
- android Eclipse there no select
点mainactivity类 右键 run as 进行 配置 就可运行
- 小程序 setData() 方法
setData() 参数格式 字段 类型 必填 描述 最低版本 data Object 是 这次要改变的数据 callback Function 否 回调函数 1.5.0 callback 是一个 ...