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
最终计数器的值就是答案。