Ejercicio de algoritmo Lección 17 - Longitud de la última palabra

Llega oferta, cava amigos a recoger! Estoy participando en la serie de actividades de reclutamiento de primavera de 2022: pase preguntas y tarjetas perforadas Haga clic para ver los detalles de las actividades .

tema

Se le proporciona una cadena s que consta de varias palabras separadas por algunos caracteres de espacio antes y después de ellas. Devuelve la longitud de la última palabra de la cadena.

Una palabra es la subcadena más grande que consta de solo letras y no contiene caracteres de espacio.

Fuente: LeetCode Enlace: leetcode-cn.com/problems/le…Los derechos de autor pertenecen a LeetCode.com. Para reimpresiones comerciales, comuníquese con la autorización oficial y para reimpresiones no comerciales, indique la fuente.

示例 1:

输入:s = "Hello World"
输出:5
解释:最后一个单词是“World”,长度为5。


示例 2:

输入:s = "   fly me   to   the moon  "
输出:4
解释:最后一个单词是“moon”,长度为4。

示例 3:

输入:s = "luffy is still joyboy"
输出:6
解释:最后一个单词是长度为6的“joyboy”。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/length-of-last-word
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

复制代码

análisis de pensamiento

Idea 1

  • Primero elimine los espacios antes y después de los caracteres trim ()
  • Luego comience a cortar con espacios para los caracteres en el medio.
  • Obtenga la matriz cortada y obtenga la longitud
  • Tome la longitud menos 1, tome la última cadena de la matriz
  • Cortar la cuerda para obtener la longitud.

Idea 2

  • Primero elimine el espacio antes y después del carácter trim(), de hecho, no es necesario eliminar el espacio al frente, lo reemplazamos con trimEnd()

Idea 3

recorrido inverso

  • Primero, elimine los espacios antes y después de los caracteres.
  • Debido a que obtenemos el valor a través del subíndice, es la longitud del carácter -1
  • Después de obtener la longitud, comience a eliminar la longitud del espacio antes y después del carácter,
  • Ahora empieza a comparar desde el final, un contador,
  • Comience el bucle desde atrás, si el valor actual es mayor que 0 y el valor actual no es igual a vacío, el contador se superpone y el valor se devuelve cuando no se cumple la condición

código

código 1

let lengthOfLastWord = function(s) {
  /**
   * 首先去除字符的前后空格 trim()
   * 然后对中间的字符开始以空格切割
   * 拿到切割数组,并获取长度
   * 拿长度减1,拿数组的最后一个字符串
   * 把字符串切割,获取长度
   * 
   * */ 
  let arr = s.trim().split(' ')
  let lastIndex = arr.length - 1
  return arr[lastIndex].split('').length
}
复制代码

codigo 2

let arr = s.trimEnd().split(' ')
复制代码

codigo 3

/**
   * 首先还是去除字符的前后空格
   * 因为我们是通过下标拿值的,所以就是字符长度-1
   * 拿到长度后,开始去除字符前后的空格长度,
   * 现在开始从最后开始比较,一个计数器,
   * 开始从后边循环,如果当前值大于0,且当前值不等于空,计数器叠加,不满足条件时返回值
   * */ 
  let index = s.length - 1
  console.log(index)
  while (s[index] === ' ') {
    console.log(index)
      index--
  }
  let wordLength = 0
  while (index >= 0 && s[index] !== ' ') {
      wordLength++
      index--
  }
  return wordLength
复制代码

Resultados de la prueba

ajuste del resultado de la prueba ()

imagen.png

Resultado de la prueba trimEnd()

imagen.png

Resultados de la prueba - Recorrido inverso

imagen.png

Supongo que te gusta

Origin juejin.im/post/7080144856512741406
Recomendado
Clasificación