编辑代码

/**
 * @brief 递归判断字符串是否为回文串
 * @param str
 * @param left
 * @param right
 * @returns
 */
function isPalindrome_recursion(str: string, left: number, right: number): boolean {
    if (left >= right) {
        return true;
    }
    if (str[left] != str[right]) {
        return false;
    }
    return isPalindrome_recursion(str, left + 1, right - 1);
}

/**
 * @brief 非递归判断一个字符串是否为回文串
 * @param str 
 * @returns 
 */
function isPalindrome_non_recursion(str: string): boolean {
    let left: number = 0,
        right: number = str.length - 1;
    while (left < right) {
        if (str[left] != str[right]) {
            return false;
        }
        left++, right--;
    }
    return true;
}

let str1 = 'a';
let str2 = 'aba';
let str3 = 'abcd';
console.log(isPalindrome_recursion(str1, 0, str1.length - 1));
console.log(isPalindrome_recursion(str2, 0, str2.length - 1));
console.log(isPalindrome_recursion(str3, 0, str3.length - 1));

let str4 = 'a';
let str5 = 'aba';
let str6 = 'abcd';
console.log(isPalindrome_recursion(str4, 0, str4.length - 1));
console.log(isPalindrome_recursion(str5, 0, str5.length - 1));
console.log(isPalindrome_recursion(str6, 0, str6.length - 1));