您的位置:首页 > 其它

leetcode-125-验证回文串

2019-08-02 23:22 323 查看

问题:

 

package com.example.demo;

public class Test125 {

/**
* 验证是否是回文字符串
* 分析:
* 定义两个索引,分别执行字符串的起始和结尾,两个索引同时向中间移动
* 在比较的时候,如果遇到非数字和字母的字符,在right--或left++(跳过当前字符)
*/
public boolean isPalindrome(String s) {
if (s == null) {
return false;
}
if (s.length() == 0) {
return true;
}

// 忽略大小写
s = s.toLowerCase();

int left = 0;
int right = s.length() - 1;
while (left < right) {
// 判断是否是数字或字母
while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {
left++;
}
while (left < right && !Character.isLetterOrDigit(s.charAt(right))) {
right--;
}
if (s.charAt(left) != s.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}

public static void main(String[] args) {
Test125 t = new Test125();
boolean asdffdsa = t.isPalindrome("A man, a plan, a canal: Panama");
System.out.println(asdffdsa);
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: