一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第14天,点击查看活动详情。
前言
今天的题目为简单,算是比较常见的一种简单题型,做题的方法有很多,本文举了两种比较简单的方法。
每日一题
今天的题目是 58. 最后一个单词的长度,难度为简单
-
给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。
-
客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。
示例 1:
输入:accounts = [[1,2,3],[3,2,1]]
输出:6
解释:
第 1 位客户的资产总量 = 1 + 2 + 3 = 6
第 2 位客户的资产总量 = 3 + 2 + 1 = 6
两位客户都是最富有的,资产总量都是 6 ,所以返回 6 。
示例 2:
输入:accounts = [[1,5],[7,3],[3,5]]
输出:10
解释:
第 1 位客户的资产总量 = 6
第 2 位客户的资产总量 = 10
第 3 位客户的资产总量 = 8
第 2 位客户是最富有的,资产总量是 10
示例 3:
输入:accounts = [[2,8,7],[7,1,3],[1,9,5]]
输出:17
提示:
- m == accounts.length
- n == accounts[i].length
- 1 <= m, n <= 50
- 1 <= accounts[i][j] <= 100
题解
API解法
我们需要获取到由单词组成的一个字符串的最后一个单词,其中单词都是用空格隔开的,那么第一时间想到了 split 方法,可以根据空格来分隔字符串,分隔之后我们拿到一个由字符串组成的数组,获取数组的最后一项返回长度,就是题目需要的答案。
实际操作之后会发现,题目给的用例中,单词之间的空格不一定是都一个空格,可能是多个,这就会影响到答案的判断,因为如果最后一个单词后面有超过两个的空格,那么就会变成空格作为数组的最后一位,所以这时候就需要另个一个数组方法 filter 来删除数组中无用的空白元素。
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function(s) {
var arr = s.split(' ').filter(item => {
if(item != '') {
return true
}
})
return arr[arr.length -1].length
};
反向遍历字符串
我们还可以返现遍历题目给的字符串,忽略掉尾部的空格,直接计算出最后一个单词的长度,知道再次遇到空格说明当前单词结束。
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function (s) {
let res = 0;
let a = 0;
for (let i = s.length - 1; i >= 0; i--) {
if (s[i] == " " && a == 0) {
continue;
}
if (s[i] != " ") {
res++;
a = 1;
}
if (s[i] == " " && a == 1) {
break;
}
}
return res;
};