如何求字符串中最后一个单词的长度

98 阅读1分钟

需求分析

现在有一个字符串s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 (单词是指仅由字母组成、不包含任何空格字符的最大子字符串)

java代码

  public int lengthOfLastWord(String s) {
      int end = s.length() - 1;
      while(end >= 0 && s.charAt(end) == ' ') end--;
      if(end < 0) return 0;
      int start = end;
      while(start >= 0 && s.charAt(start) != ' ') start--;
      return end - start;
  }

代码分析

1.它定义了一个变量 end,用来表示字符串 s 中最后一个非空格字符的位置。它通过循环遍历字符串 s,从后往前找到第一个非空格字符的位置,然后将其赋值给变量 end。在找到第一个非空格字符之前,它会一直往前移动,直到字符串 s 中没有字符或者只有空格字符为止。

2.如果变量 end 小于 0,说明字符串 s 中没有非空格字符,直接返回 0。否则,它定义了另一个变量 start,用来表示字符串 s 中最后一个单词的起始位置。它通过循环遍历字符串 s,从变量 end 开始往前找到第一个空格字符的位置,然后将其赋值给变量 start。在找到第一个空格字符之前,它会一直往前移动,直到字符串 s 中没有字符或者只有非空格字符为止。

3.它返回变量 end 和 start 的差值,即字符串 s 中最后一个单词的长度。注意,如果字符串 s 中最后一个单词后面有空格字符,这些空格字符不会被计算在内。