1、使用js验证字符串是否回文
document.write(isPalindrome("abcba"));//true
document.write(isPalindrome("abba")); //true document.write(isPalindrome("aba"));//true
document.write(isPalindrome("ba"));//false
function isPalindrome(line) {
line += "";
var len = line.length-1;
for(var i=0;i<len;i++,len--){
if(line.charAt(i) !== line.charAt(len)){
return false;
}
}
return true;
}
2、判断是否可以通过添加一个字符使该字符串变为回文字符串
var arr = ['aba','abcceba','abcb'];
fun(arr[0]);
fun(arr[1]);
fun(arr[2]);
function fun(str) {
var arr = str.split('');
var len = arr.length;
var len1 = len/2;
var left = 0 ,right=len-1;
//left数组左边,(奇数时包含中间),right数组右边
var move = true;//是否可以跳过一位
var flag = true;//可以
while (left<len1 && right>=len1){
if(arr[left]===arr[right]){
left++;
right--;
}else if(arr[left+1]===arr[right] && move == true){
left++;
move = false;
}else if(arr[right-1]===arr[left] && move == false){
right--;
move = false;
}else {
flag = false;
break;
}
}
if (flag == false) {
document.write("不可以");
}
else {
document.write("可以");
}
}
这个方法和括号匹配问题有些相似,
但我认为解这个题最好的还是用动态规划算法做,
算出需要加几位可以变为回文,然后在和1比较,
不过作者不会啊~~~在学习中,有没有聪明的大神可以在评论区做一下。