1763. Longest Nice Substring

233 阅读1分钟

题目描述

leetcode-cn.com/problems/lo…

分析

如果一个字符串是 nice 的,说明里面没有一个字符让他不 nice,也就是说,所有的字符在这个串里都有对应的大小写

因此只要有一个字符导致了当前的字符串不 nice,最长的 nice 字符串只能是以该字符所在位置为边界去截取左右两边

在做上述检查

算法

递归

过程

检查所有的字符

需要一个字符是不合法的,就去递归它的左右字串,返回长的那个

代码

/**
 * @param {string} s
 * @return {string}
 */
var longestNiceSubstring = function (s) {
  if (s.length < 2) return ""

  for (let i = 0; i < s.length; i++) {
    const c = s.charCodeAt(i)
    if (
      (c < 97 && s.indexOf(String.fromCharCode(c + 32)) === -1) ||
      (c >= 97 && s.indexOf(String.fromCharCode(c - 32)) === -1)
    ) {
      const s1 = longestNiceSubstring(s.substring(0, i)),
        s2 = longestNiceSubstring(s.substring(i + 1))
      if (s1.length >= s2.length) return s1
      return s2
    }
  }

  return s
}