题目:给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。
示例:
输入: "Hello World"
输出: 5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/length-of-last-word
解答:
一开始用了indexOf然后分了空格在最后和不在最后,后来测试的时候发现这种解答是不对的,忽略了空格有多处,并且空格不止一个,后来从后往前遍历
1 class Solution { 2 public int lengthOfLastWord(String s) { 3 int res = 0; 4 if (s != null && s.length() > 0) { 5 boolean flag = true; 6 for (int i = s.length() - 1; i >= 0; i--) { 7 String chars = Character.toString(s.charAt(i)); 8 if (!chars.equals(" ")) { 9 if (flag) { 10 res++; 11 } 12 } else { 13 // 空的,还没有遇到有值得 14 if (res == 0) { 15 flag = true; 16 } else { 17 flag = false; 18 } 19 } 20 } 21 } 22 return res; 23 24 } 25 }
好像过于繁琐了。。
第7、8行可以直接 if (s.charAt(i) != ' ')
最后看看别人的代码,精简下来是这样
1 public static int lengthOfLastWord(String s) { 2 int res = 0; 3 if (s == null || s.length() == 0) return 0; 4 for (int i = s.length() - 1; i >= 0; i--) { 5 if (s.charAt(i) == ' ') { 6 // 空的,还没有遇到有值得 7 if (res == 0) continue; 8 break; 9 } 10 res++; 11 } 12 return res; 13 }
字符和字符串互转
Char——>String String s = String.valueOf('c'); //单个字符 String s = String.valueOf(new char[]{'c'}); //转换数组 String s = Character.toString('c');//实际上直接返回String.valueOf(char) String s = new Character('c').toString(); String s = new String(new char[]{'c'}); String s = "" + 'c'; String——>Char String.charAt(index)//return char String.toCharArray()//return char[]