网站后台功能需求,软件开发net教程免费,动漫设计好找工作吗,游戏交易网站建设力扣#xff1a;判断回文串#xff08;JavaScript#xff09; 题目解法一#xff1a;单层for循环解法二#xff1a;while循环解法三#xff1a;forpush解法四#xff1a;递归 题目
判断一个字符串是否是回文串#xff0c;比如#xff1a;12321、3443、8338、83438都是… 力扣判断回文串JavaScript 题目解法一单层for循环解法二while循环解法三forpush解法四递归 题目
判断一个字符串是否是回文串比如12321、3443、8338、83438都是回文串。而不是规律的就不是如果12345abcde。四种解法附全部源码。
解法一单层for循环
时间复杂度为O(n),单层for循环
function demo(i) {ii;if(i 0)return true;for(let temp0;tempi.length;i){if(i[temp]!i[i.length-1-temp]){return false;}}return true;
}
let truNum 12321
let falNum 1221
let truStr 1234321
let falStr 12345
console.log(demo(truNum));
console.log(demo(falNum));
console.log(demo(truStr));
console.log(demo(falStr));首先我们定义一个函数把传入参数变成字符串然后使用for循环判断它的长度为temp和长度为最大长度-temp-1是否相等如果都相等则返回true否则返回false。这种方法主要判断它们里面的内容是否是对称的。
解法二while循环
时间复杂度O(n)
function demo(i) {ii;if(i0)return true;let small0;let bigi.length-1;while(smallbig){if(i[small]!i[big]){return false;}small;big--;}return true;}let truNum 12321let falNum 1221let truStr 1234321let falStr 12345console.log(demo(truNum));console.log(demo(falNum));console.log(demo(truStr));console.log(demo(falStr));while和for循环时间复杂度相同不同的是while定义了两个变量用于存储最小长度和最大长度。在循环中判断两个字符长度之间的值是否相同不相同则false否则最小长度最大长度–直到最小长度不小于最大长度。退出循环返回true。
解法三forpush
时间复杂度O(2/n)、O(2/n-1)
function demo(i) {i i;let arr [];if (i 0) return true;if (i.length % 2 ! 0) {let j i.length / 2 - 1for (let temp 0; temp i.length / 2 - 1; temp) {arr.push(i[temp])let h parseInt(i.length - 1 - temp)console.log(arr[temp], i[h]);if (arr[temp] ! i[h]) {return false;}}} else {for (let temp 0; temp i.length - 1; temp) {let j i.length / 2for (let temp 0; temp i.length / 2; temp) {arr.push(i[temp])let h parseInt(i.length - 1 - temp)console.log(arr[temp], i[h]);if (arr[temp] ! i[h]) {return false;}}}}return true;}let truNum 12321let falNum 1221let truStr 1234321let falStr 12345console.log(demo(truNum));console.log(demo(falNum));console.log(demo(truStr));console.log(demo(falStr));还是for循环用push装进一个数组中然后进行遍历判断字符长度是否为奇数。进行对应判断。只遍历长度的一半或长度的一半减1同时字符串如果是0则直接返回true。
解法四递归
时间复杂度O(n/2)
function demo(str,min,max) {if(minmax || str 0) return true;if(str[min]!str[max-1]) return false;return demo(str,min,--max);}let truNum 12321let falNum 1221let truStr abcbalet falStr 12345console.log(demo(truNum,0,5));console.log(demo(falNum,0,4));console.log(demo(truStr,0,5));console.log(demo(falStr,0,5));递归实现方式三个参数第一个为字符串第二个为0也就是最小长度第三个为字符串长度如果最小长度最大长度或者str为0则返回true如果最小长度不等于大长度的字符串值返回false否则返回字符串最小长度1最大长度-1.