java字符串练习题6、最后一个单词的长度

简介: java字符串练习题6、最后一个单词的长度

java字符串练习题6、最后一个单词的长度


题目:

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。

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

测试数据:

示例 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”。

 

提示:

1 <= s.length <= 10000

s 仅有英文字母和空格 ' ' 组成

s 中至少存在一个单词

题解:

这个题的解法很多,我们先使用一个最简单的方法来解题,我们在之前的String字符串函数中学了一个函数叫做split,这个函数能将英文语句通过空格的方式都拆分出来,他并没有说最后一个结尾是否是符号,所以我们就直接当做一个单词来处理。

这里拆分后我获取到最后一个元素,直接输出长度即可,还是很方便的。相对效率还可以。

方法1:使用split

package com.item.actoin;
import java.util.Scanner;
public class Demo {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    sc.close();
    String[] arr = s.split(" ");
        System.out.println(arr[arr.length-1].length());
  }
}

想到以上的方法肯定能想到这个方法,这个就是直接获取到最后一个单词来处理。

方法2:使用lastIndexOf

package com.item.actoin;
import java.util.Scanner;
public class Demo {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    sc.close();
    String trim = s.trim();
    int index = trim.lastIndexOf(" ");
        System.out.println(trim.length()-index-1);
  }
}

方法3:夹逼法

还是使用夹逼法,先找到最后一个单词,再根据最后一个单词的下标向左找,只要是空格就结束即可,通过结尾-起始的方式就能计算出长度了,这个效率稍微高一些。

package com.item.actoin;
import java.util.Scanner;
public class Demo {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    sc.close();
    //直接获取下标最大值
    int end = s.length() - 1;
    //找到最后一个不等于空格的字符下标
    while (end >= 0 && s.charAt(end) == ' ') {
      end--;
    }
    //如果没有就算了。
    if (end < 0) {
      System.out.println(0);
      return;
    }
    //从结束点是向前找起始点
    int start = end;
    //只要不是空格就算是单词部分
    while (start >= 0 && s.charAt(start) != ' ') {
      start--;
    }
    System.out.println(end - start);
  }
}
相关文章
|
6天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
16 3
|
6天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
8 2
|
9天前
|
存储 移动开发 Java
java核心之字符串与编码
java核心之字符串与编码
13 2
|
17天前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
211 4
|
27天前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
|
1月前
|
算法 Oracle Java
Java字符串拼接技术演进及阿里巴巴的贡献
本文主要讲述了Java字符串拼接技术的演进历程,以及阿里巴巴贡献的最新实现 PR 20273。
|
2月前
|
API C# 开发者
WPF图形绘制大师指南:GDI+与Direct2D完美融合,带你玩转高性能图形处理秘籍!
【8月更文挑战第31天】GDI+与Direct2D的结合为WPF图形绘制提供了强大的工具集。通过合理地使用这两种技术,开发者可以创造出性能优异且视觉效果丰富的WPF应用程序。在实际应用中,开发者应根据项目需求和技术背景,权衡利弊,选择最合适的技术方案。
48 0
【Java】单词倒序输出
  如何将一段单词倒序输出?把“Hello Java Hello China”变成“China Hello Java Hello”?   看起来好像很简单,只需要把字符串先分割成单词,然后加入一个StringBuilder或者StringBuffer中,最后再使用toString方法即可,现在来实现...
1485 0
|
7天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
21 2
|
11天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
下一篇
无影云桌面