Skip to content

百度:实现一个函数,判断输入是不是回文字符串 #20

Open

Description

@sisterAn
No description provided.

Activity

  1. changed the title [-]Leetcode3:无重复字符的最长子串[/-] [+]百度:实现一个函数,判断输入是不是回文字符串[/+] on Apr 19, 2020
  2. Aiyoweioo commented on Apr 20, 2020

    @Aiyoweioo

    方法一: 用首尾两个指针,向中间扫描字符串,如果两指针指向的字符都一样, 这字符串就是一个回文。时间复杂度:O(n),空间复杂度:O(1)
    方法二:从中间开始,向两头扩展查看指向的字符是否一致。

    /** 判断是不是回文字符串
     * @param {string} str 
     * return Boolean
     */
    function IsPalindrome(str) {
      if (str === null  || str.length < 1) {
        return false
      }
      let left = 0, right = str.length - 1
      while(left < right) {
        if(str.charAt(left) !== str.charAt(right)) {
          return false
        }
        ++left;
        --right;
      }
      return true
    }
  3. sisterAn commented on Apr 20, 2020

    @sisterAn
    OwnerAuthor

    解法一:使用API

    function isPlalindrome(input) {
      if (typeof input !== 'string') return false;
      return input.split('').reverse().join('') === input;
    }

    解法二:不使用API

    function isPlalindrome(input) {
      if (typeof input !== 'string') return false;
      let i = 0, j = input.length - 1
      while(i < j) {
          if(input.charAt(i) !== input.charAt(j)) return false
          i ++
          j --
      }
      return true
    }
  4. zero9527 commented on Apr 29, 2020

    @zero9527
    /**
     * 判断字符串是否是回文字符串
     * @param {*} str
     */
    function isReverseString(str) {
      if (typeof str !== 'string') return false;
      // 方法1:reverse
      // return str.split('').reverse().join('') === str;
    
      // 方法2
      const strArr = str.split('');
      let reverseStr = '';
      let len = strArr.length - 1;
      while (len >= 0) reverseStr += strArr[len--];
      return str === reverseStr;
    }
    
    console.log(isReverseString('asddsa')); // true
    console.log(isReverseString('asdDsa')); // false
    console.log(isReverseString('13dffd31')); // true
  5. qianlongo commented on Aug 15, 2020

    @qianlongo
    const isPalindrome = () => {
     const len = str.length
      const halfLen = len / 2
      
    
      for (let i = 0; i < halfLen; i++) {
        if (str[i] !== str[ len - i - 1 ]) {
          return false
        }
      }
    
      return true
    }
    
  6. thinkingc commented on Apr 6, 2021

    @thinkingc

    双指针

    function isReverseString(str) {
      var half = str.toString().length / 2 | 0
      var l = 0
      var r = str.length - 1
    
      while (l != half) {
        if (str[l++] != str[r--]) return false
      }
      return true
    }
    
    var { log } = console
    log(isReverseString('12321'))
    log(isReverseString('123321'))
    log(isReverseString('234'))
  7. AlexZhang11 commented on May 31, 2024

    @AlexZhang11
    function isPalindrome(str){
        let i = 0,k = str.length-1
        let flg = true
        while(i<k&&flg){
            if(str.charAt(i)!==str.charAt(k)){
                flg= false
            }
            i++
            k--
        }
        return flg
    }
    
    console.log(isPalindrome('aabbccdccbbaa'))
    console.log(isPalindrome('aabbccdvsccbbaa'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions