Given a string s consists of upper/lower-case alphabets and empty space characters '
', return the length of last word in the string.
If the last word does not exist, return 0.
Note: A word is defined as a character sequence consists of non-space characters only.
For example,
Given s = "Hello World",
return 5.
现在有一个序列,里面会包含大小写字符和空白符。
找到最后一个字符,计算它的长度。
本题所需基础为应该熟悉Java的内置函数 :
trim() 方法用于删除字符串的头尾空白符。
语法
public String trim()
参数
-
无
返回值
删除头尾空白符的字符串。
Java lastIndexOf() 方法
lastIndexOf() 方法有以下四种形式:
-
public int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
-
public int lastIndexOf(int ch, int fromIndex): 返返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
-
public int lastIndexOf(String str): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
-
public int lastIndexOf(String str, int fromIndex): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
熟悉Java的基础知识:
在java中String类可以定义字符串变量和字符串数组,length()用于求String字符串对象的长度,而length用
于求String字符串数组的长度。
length()是求String字符串对象中字符的个数,而length是求字符串数组中有多少个字符串。
String为字符串 String[]为字符串数组,意味着String[]包含很多String
比如
String s1="1";
String s2="1";
String s3="1";
Sring[]arr=new String[]{s1,s2,s3}
解法一:基于字符串利用Java内置函数 O(1)解决问题:
class Solution {
public int lengthOfLastWord(String s) {
return s.trim().length()- s.trim().lastIndexOf(" ") -1 ;
}
}
运行时间 4ms
解法二:也是利用内置函数 解法与上述解法有些许不同、此解法将字符串转化为字符串数组来做:
public class Solution {
public int lengthOfLastWord(String s) {
if(s.trim().equals("")|| s.length() == 0){
return 0;
}
String[] ss = s.trim().split(" ");//去掉字符串前后空格以“ ”来划分字符串数组
int len = ss.length; //字符串数组中数组的个数
return ss[len - 1].length(); //返回最后一个数组的长度
}
}
这种写法需考虑到“”与“ ” 的特殊情况。