My code:
public class Solution {
public int lengthOfLastWord(String s) {
if (s == null || s.length() == 0)
return 0;
int tail = s.length() - 1;
for (int i = s.length() - 1; i >= 0; i--) {
if (s.charAt(i) != ' ') {
tail = i;
break;
}
else
continue;
}
int lastIndex = -1;
for (int i = 0; i <= tail; i++) {
if (s.charAt(i) == ' ')
lastIndex = i;
}
if (lastIndex == -1)
return tail + 1;
else if (lastIndex == s.length() - 1)
return 0;
else
return tail - lastIndex;
}
public static void main(String[] args) {
Solution test = new Solution();
System.out.println(test.lengthOfLastWord("a bcs "));
}
}
My test result:
这道题目还是挺有意思的。需要先做个小处理,把尾巴后面的空格给去了,然后得到一个tail作为新的字符串的结束为止。
然后在开始遍历。然后考虑一些小细节。
String 类的简单题也不是很简单啊,都需要想一想。
**
总结: Array
**
Anyway, Good luck, Richardo!
My code:
public class Solution {
public int lengthOfLastWord(String s) {
if (s == null || s.length() == 0)
return 0;
for (int i = s.length() - 1; i >= 0; i--) {
char curr = s.charAt(i);
if (curr != ' ') {
int j = i;
while (j >= 1 && s.charAt(j - 1) != ' ')
j--;
return i - j + 1;
}
}
return 0;
}
}
这道题木如果从前往后扫描,会有点烦。但是为什么不能从后往前扫呢?
从后往前扫,找到第一个不是空格的字母。然后单独处理。就行了。
Anyway, Good luck, Richardo!
My code:
public class Solution {
public int lengthOfLastWord(String s) {
if (s == null || s.length() == 0) {
return 0;
}
int i = s.length() - 1;
while (i >= 0) {
if (s.charAt(i) == ' ') {
i--;
}
else {
break;
}
}
if (i < 0) {
return 0;
}
int j = i;
while (i >= 0) {
if (s.charAt(i) != ' ') {
i--;
}
else {
break;
}
}
return j - i;
}
}
简单题,从后往前扫描就行了。
Anyway, Good luck, Richardo! -- 09/17/2016