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

举报
红目香薰 发表于 2023/01/23 17:07:37 2023/01/23
【摘要】 ​ ​编辑java字符串练习题6、最后一个单词的长度题目: 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。测试数据:示例 1:输入:s = "Hello World"输出:5解释:最后一个单词是“World”,长度为5。示例 2:输入:s = "   fly me   to   t...

 编辑

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);
	}
}


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。