网站做营销推广,关键词的优化方案,世界著名办公室设计,海尔建设此网站的目的是什么最后一个单词的长度
给你一个字符串 s#xff0c;由若干单词组成#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1#xff1a;
输入#xff1a;s Hello World由若干单词组成单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1
输入s Hello World
输出5
解释最后一个单词是“World”长度为 5。示例 2
输入s fly me to the moon
输出4
解释最后一个单词是“moon”长度为 4。示例 3
输入s luffy is still joyboy
输出6
解释最后一个单词是长度为 6 的“joyboy”。
实现思路1将字符串转成全为单词的字符串列表然后直接返回最后一个单词的长度即可。
处理将所给字符串利用正则表达式进行匹配筛选将空格去掉后 得到一个全为单词的字符串数组然后返回最后一个单词的长度即可。
实现代码 public int lengthOfLastWord(String s) {//正则表达式匹配去掉空格得到单词数组String[] words s.split(\\s);//判断数组是否为空if (words.length 0) {return 0;}//返回最后一个单词的长度return words[words.length - 1].length();//等价于 最后一个单词在数组的索引 int lastWordIndexwords.length-1;// 最后一个单词的长度 int lastWordLengthwords[lastWordIndex].length();}
split: 这是Java String 类的一个方法用于根据指定的分隔符将字符串分割成多个子字符串并返回一个子字符串数组。\\s: 这是一个正则表达式其中 \\s 匹配任何空白字符包括空格、制表符、换行符等而 表示匹配一个或多个前面的字符。因此\\s 将匹配一个或多个连续的空白字符。
正则表达式详解在文章的后面进行补充如果有不懂的可以看看后面的知识补充部分 实现思路2通过从后往前遍历直接计算最后一个单词的长度。
实现步骤
1.我们需要定义一个变量用于记录最后一个单词的起始索引。
2.去掉字符串前后的字符串确保前后没有空格然后从后往前开始遍历记录当前索引若是没有遇到空格则更新用于记录的索引遇到空格时遍历使用break关键字跳出循环说明最后一个单词已经遍历完。
3.返回最后一个单词的长度字符串长度-起始索引
实现代码 public int lengthOfLastWord(String s) {// 如果字符串s为空或为null返回0if(s.length() 0 || s null) {return 0;}// 去除字符串s两端的空白字符s s.trim();// 初始化start变量这将用于记录最后一个单词的起始索引int start 0;// 从字符串的末尾开始向前遍历直到遇到一个非空格字符for(int i s.length() - 1; i 0; i--) {if(s.charAt(i) ) {// 遇到空格结束循环break;}// 更新start为当前非空格字符的索引start i;}// 计算最后一个单词的长度即字符串长度减去start// 由于start是在最后一个单词的第一个字符上所以用字符串长度减去start// 得到最后一个单词的长度return s.length() - start;
}
charAt() 是 String 类的一个方法用于返回指定索引处的字符。
第二种思路实现简单执行效率比第一种要高。 知识补充
正则表达式
正则表达式Regular Expression简称Regex是一种用于匹配字符串中字符组合的模式Pattern。它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在编程语言和文本编辑器中正则表达式通常用于搜索、替换、字符串分割等操作。
以下是一些基本的正则表达式元素和它们的含义
.匹配任意单个字符除了换行符。^匹配输入字符串的开始位置。$匹配输入字符串的结束位置。*匹配前面的子表达式零次或多次。匹配前面的子表达式一次或多次。?匹配前面的子表达式零次或一次。{n}恰好匹配确定的 n 次数。{n,}至少匹配 n 次。{n,m}最少匹配 n 次且最多 m 次。[]匹配方括号内的任意字符字符集。|逻辑或操作符匹配选项或多个表达式中的一个。\转义特殊字符或表示特殊序列。()将多个表达式组合成一个子表达式用于分组。
特殊序列的例子
\d匹配任意数字等同于 [0-9]。\w匹配任意字母数字字符包括下划线等同于 [A-Za-z0-9_]。\s匹配任意的空白符包括空格、制表符、换行符等。
正则表达式在不同的编程语言和工具中语法可能略有不同但大多数基本元素是通用的。例如在Java中你可以使用 java.util.regex 包中的类来处理正则表达式。在Python中你可以使用 re 模块。
下面是一些正则表达式的使用示例
匹配一个电子邮件地址[a-zA-Z0-9_.-][a-zA-Z0-9-]\.[a-zA-Z0-9-.]匹配一个URLhttps?://[^\s/$.?#].[^\s]*匹配一个电话号码(\?\d{1,3})?[-. ]?\d{1,4}[-. ]?\d{1,4}[-. ]?\d{1,9}匹配一个日期格式如YYYY-MM-DD\d{4}-\d{2}-\d{2}
正则表达式是文本处理的强大工具但它们也可能相当复杂特别是当涉及到复杂的模式匹配时。