LeetCode 434. 字符串中的单词数
题目介绍:
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: "Hello, I Love JueJin!" 输出: 4 解释: 这里的单词是指连续的不是空格的字符,所以 "Hello,"、"JueJin!" 算作 1 个单词。
方案一:利用split、filter方法
将字符串s
使用split
方法进行分割,返回了包含单词和空字符的数组,再利用filter
方法筛选出不是空字符的所有单词,返回对应的长度即可。
Up Code ~ 上码 ~
/** * @method countSegments1 * @description: 使用split、filter方法 * @param {string} s * @return {*} */ function countSegments1(s: string): number { if (s.length === 0) return 0; // 1. split分割 - 空格分割 const sArr = s.split(' '); // 2. 筛除所有的空格 const segments = sArr.filter((v) => v !== ''); // 3. 返回单词长度 return segments.length; }
方法很简单,上功能测试~~~
console.log(countSegments1('Hello, I Love JueJin!')); // 4
没有问题!
方案二:遍历字符串s
,按空格区分单词并计数
/** * @method countSegments2 * @description: 循环遍历,按单词/空格计数 * @param {string} s * @return {*} */ function countSegments2(s: string): number { // 获取字符串长度 const sLen = s.length; // 临界点判断 if (sLen === 0) return 0; // 定义一个单词临时变量 let tmpWord = ''; // 定义一个记录单词数量的变量 let count = 0; // 1. 遍历字符串s for (let i = 0; i < sLen; i++) { // 2. 如果遇到的不是一个空格 if (s[i] !== ' ') { // 是一个单词,累加 tmpWord += s[i]; // 特殊情况处理:判断是最后一个字符了 if (i === sLen - 1) { count++; } } else { // 3. 判断是一个空格,此时要处理连续空格的情况 if (tmpWord !== '') { // 有值,说明之前是一个单词,不是连续空格 count++; // 重置单词 tmpWord = ''; } } } // 返回统计长度 return count; }
上功能测试~~~
console.log(countSegments2('Hello, I Love JueJin!')); // 4
没有问题!