华为机试 HJ1 字符串最后一个单词的长度
华为机试 HJ1 字符串最后一个单词的长度
文章目录
- 华为机试 HJ1 字符串最后一个单词的长度
- 一、题目描述
- 二、方法一 Java lastIndexOf() 方法
- 三、方法二 Java split()方法
使用Java的lastIndexOf()和split()解决求取方法字符串最后一个单词的长度的问题
一、题目描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例:
输入:hello nowcoder
输出:8说明:最后一个单词为nowcoder,长度为8
二、方法一 Java lastIndexOf() 方法
java有一个方法:public int lastIndexOf(int ch)
它可以返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。因为单词之间以空格相隔,所以可以搜索输入字符串最后一个空格所在的索引,这样字符串总长度减去(最后空格的索引+1)即可得到字符串最后一个单词的长度。
注意
为了获取输入的String类型的字符串,我们要使用nextLine()。这里简单介绍一下nextLine() 和 next()。
nextLine() 方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。也就是说输入一串字符,它就可以接受所有字符包括空格,但是遇到回车Enter就会停止录入,只录入前面的东西。
next()会自动消去有效字符前的空格,只返回输入的字符,不能得到带空格的字符串。也就是说如果输入了一串字符,到了有空格的时候就会停止录入,只录入空格前面的东西,空格后面的东西(包括分隔的空格都会保留在缓存区域)
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine(); //str是输入的字符串System.out.println(str.length()-(str.lastIndexOf(' ')+1)); // str.lastIndexOf(' ')+1,加1是因为索引是从0开始计数的,长度是从1开始的Scanner sc = new Scanner(System.in);String str = sc.nextLine();}
}
三、方法二 Java split()方法
split()方法可以将一个字符串按条件分割为子字符串,然后将结果作为字符串数组返回。因为单词之间以空格相隔,所以可以将字符串按照空格分隔为不同的子字符串,再用length()方法求取最后一个子字符串的长度。
public static void main(String[] args){Scanner sc = new Scanner(System.in);String str = sc.nextLine();String[] s = str.split(" "); //将分隔的子字符串放入String数组中int length = s[s.length - 1].length(); //最后一个子字符串所在的数组位置是(s.length - 1)System.out.println(length);
}