字符串回文
在数据结构中,回文问题是很常见的问题,下面关于回文,总结出了几套使用与基本回文判断的方法
方法一:StringBuffer中的reverse函数
由于String类型没有reverse函数,所以需要将String类型转换为StringBuffer类型再进行使用,下面试验证英文回文字符串(去除非大小写字母和数字后的小写字符串)的方法
int n = s.length(); int i=0;ddsf StringBuffer x = new StringBuffer(); while(i<n-1){ if(Character.isLetterOrDigit(s.charAt(i))){ x.append(Character.toLowerCase(s.charAt(i))); } i++; } StringBuffer x_reverses= x.reverse(); return x.toString().equals(x_reverses.toString());
以上使用Character.isLittleOrDigit()方法判断是否为字母或者数字,使用Character.ToLowerCase将字母转换为小写
方法二:在原字符串上直接判断
使用双指针在原字符串上直接遍历,选中头尾判断是否相等,相等则++--直到left等于right,无脑操作没什么好讲的。
class Solution { public boolean isPalindrome(String s) { int n = s.length(); int left = 0, right = n - 1; while (left < right) { while (left < right && !Character.isLetterOrDigit(s.charAt(left))) { ++left; } while (left < right && !Character.isLetterOrDigit(s.charAt(right))) { --right; } if (left < right) { if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) { return false; } ++left; --right; } } return true; } }

浙公网安备 33010602011771号