import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            String[] arr = str.split(" ");
            int len = arr.length;
            System.out.println(arr[len - 1].length());
        }
    }
}

废话不多说直接上代码,主要思路就是利用分隔符将字符串分隔,保存在一个String数组中,然后统计数据最后一个元素的长度即可。

当然Java果然是比较啰嗦的,同样的思路,用python求解就简单很多:

import sys

str = input()
arr = str.split(" ")
n = len(arr) - 1
print(len(arr[n]))

而这两种语言则和快一点关系都没有,普遍的运行时间都是50ms左右,占用内存上python好于Java,只有4MB,大概是Java的一半。

换成C语言则能感觉到什么是YYDS:

#include <stdio.h>
#include <string.h>

#define SIZE 5000

int main() {
	char array[SIZE];
	gets(array);
	int count = 0;
	int len = strlen(array);
	for (int i = len - 1; i >= 0; i--)
	{
		if (array[i] == ' ')
		{
			break;
		}
		count += 1;
	}
	printf("%d\n", count);
	return 0;
}

只用了4ms,300KB的内存。但是思路上就变了:

1、计算输入的字符数组的长度;

2、倒序遍历数据,直到遇到空格停下;

3、遍历过程中计数器+1

最终计数器的值就是答案。