Skip to content

字符串

求最长公共前缀

例: 输入: ["flower","flow","flight"] 输出: "fl"

解法 1

js
var longestCommonPrefix = function (strs) {
  if (!strs.length) return '';
  strs.sort((a, b) => a.length - b.length);
  let vlength = strs[0].length;
  for (let i = 1; i < strs.length; i++) {
    let flag = false;
    while (vlength !== 0 && flag === false) {
      let o = strs[0].substring(0, vlength);
      let n = strs[i].substring(0, vlength);
      if (o === n) {
        flag = true;
      } else {
        vlength--;
      }
    }
  }
  return strs[0].substring(0, vlength);
};

有效的括号

例:

输入: "()[]{}" 输出: true

输入: "([)]" 输出: false

输入: "{[]}" 输出: true

js
var isValid = function (s) {
  let arr = [];
  let len = s.length;
  if (len % 2) return false;
  for (let i = 0; i < len; i++) {
    let letter = s[i];
    switch (letter) {
      case '(': {
        arr.push(letter);
        break;
      }
      case '[': {
        arr.push(letter);
        break;
      }
      case '{': {
        arr.push(letter);
        break;
      }
      case ')': {
        if (arr.pop() !== '(') return false;
        break;
      }
      case ']': {
        if (arr.pop() !== '[') return false;
        break;
      }
      case '}': {
        if (arr.pop() !== '{') return false;
        break;
      }
    }
  }
  return !arr.length;
};

回文数

来源:力扣(LeetCode)

说明:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121 输出: true 示例  2:

输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

js
var isPalindrome = function (x) {
  if (x < 0) return false;
  x = String(x);
  let s = 0;
  let e = x.length - 1;
  while (s <= e) {
    if (x[s] === x[e]) {
      s++;
      e--;
    } else {
      return false;
    }
  }
  return true;
};

最后一个单词的长度

来源:力扣(LeetCode)

说明:

给定一个仅包含大小写字母和空格  ' '  的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。

如果不存在最后一个单词,请返回 0 。

说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。

输入: "Hello World" 输出: 5

输入: "a " 输出: 1

解法一:

js
var lengthOfLastWord = function (s) {
  if (!s) return 0;
  let arr = s.trim().split(' ');
  return arr[arr.length - 1].length;
};

解法二:

js
var lengthOfLastWord = function (s) {
  if (!s) return 0;
  s = s.trim();
  s = ' ' + s;
  let index = 0;
  for (let i = s.length - 1; i >= 0; i--) {
    if (s[i] === ' ') {
      index = i;
      break;
    }
  }
  return s.length - 1 - index;
};

字符串中的第一个唯一字符

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

示例:

s = "leetcode" 返回 0

s = "loveleetcode" 返回 2

js
/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function (s) {
  for (let i = 0; i < s.length; i++) {
    if (s.indexOf(s[i]) === s.lastIndexOf(s[i])) {
      return i;
    }
  }
  return -1;
};