题目如下:
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.
public class Solution {
public static int lengthOfLastWord(String s) {
if(s.length()==0||s.equals(" ")){
return 0;
}
//判断字符串中“ ”的下标,如果字符串中不存在,则返回值为-1
if(s.indexOf(" ")==-1){
return s.length();
}
String[] ss = s.split(" ");
//ss.length== 0为了防止字符串全由空格组成
if(ss.length == 0 || ss[ss.length-1].equals(" ")){
return 0;
}
return ss[ss.length-1].length();
}
public static void main(String[] args){
String s =" ";
int len = lengthOfLastWord(s);
System.out.println(len);
}
}
最开始没有考虑到字符串全为空格的情况,造成了下标溢出。采用以上这种方式的大概运行时间为325ms.
又从网上查找了其他方式,发下如下方式只需要250ms:
public class Solution {
public static int lengthOfLastWord(String s) {
if (s != null && !s.trim().equals("")) {
String[] arr = s.trim().split(" ");
int length = arr[arr.length - 1].length();
return length;
}
return 0;
}
public static void main(String[] args){
String s =" ";
int len = lengthOfLastWord(s);
System.out.println(len);
}
}
又对我的代码中不需要判断的条件去掉,达到的速度也在250ms左右
public class Solution {
public static int lengthOfLastWord(String s) {
String[] ss = s.split(" ");
//ss.length== 0为了防止字符串全由空格组成
if(ss.length == 0 || ss[ss.length-1].equals(" ")){
return 0;
}
return ss[ss.length-1].length();
}
public static void main(String[] args){
String s =" ";
int len = lengthOfLastWord(s);
System.out.println(len);
}
}