每日一道算法Day30

100 阅读1分钟

题目描述

image.png

大致思路:

定义startend 用来记录最后一个字符串的起始位置与结束位置。 让从末尾开始遍历字符串, 遇到空字符串后 continue, 当遇到第一个不为空的即为结束为止, 此时给end赋值, 当遇到第二个空字符时, 记录该位置前一个, 即为start

代码如下:

function lengthOfLastWord(s: string): number {

//一些基本校验
  if ((s.length === 0) || (s.length === 1 && s[0] === ' ')) {
    return 0;
  }
  if (s.length === 1) {
    return 1;
  }

//定义 start与 end
  let start = 0;
  let end = 0;
  for (let i = s.length - 1; i >= 0; --i) {
  
  //循环找到第一个不为空的字符
    if (s[i] === ' ' && end === 0) {
      continue;
    }

   //找到后赋值给end
    if (end === 0) {
      end = i;
    }
   
   //找到第二个为空的字符, 将其前一个位置赋值给start, 结束循环
    if (end !== 0 && s[i] === ' ') {
      start = i + 1;
      break;
    }
  }
  return end - start + 1;
}