验证回文串
image.png

思路:双指针

  1. /**
  2. * @param {string} s
  3. * @return {boolean}
  4. */
  5. var isPalindrome = function (s) {
  6. const t = [];
  7. for (let i = 0; i < s.length; i++) {
  8. if (/[a-zA-Z0-9]/.test(s[i])) {
  9. t.push(s[i].toLowerCase())
  10. }
  11. }
  12. let j = t.length - 1;
  13. let i = 0;
  14. while (i < t.length && i < j) {
  15. if (t[i] !== t[j]) {
  16. console.log(t[i], t[j]);
  17. return false;
  18. }
  19. i++;
  20. j--;
  21. }
  22. return true;
  23. };
  24. const res = isPalindrome("1ab_a");
  25. console.log(res);
  1. 首先将字符串中的所有字母,数字全部转入数组之中

    1. const t = [];
    2. for (let i = 0; i < s.length; i++) {
    3. if (/[a-zA-Z0-9]/.test(s[i])) {
    4. t.push(s[i].toLowerCase())
    5. }
    6. }
  2. 设置i,j分别指向数组的首尾,然后令I,j都向数组中间靠近,在这个过程中不断比较t[i]与t[j]

    1. let j = t.length - 1;
    2. let i = 0;
    3. while (i < t.length && i < j) {
    4. if (t[i] !== t[j]) {
    5. console.log(t[i], t[j]);
    6. return false;
    7. }
    8. i++;
    9. j--;
    10. }
    11. return true;