1455. 检查单词是否为句中其他单词的前缀
题目描述:
给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。
如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 searchWord 不是任何单词的前缀,则返回 -1 。
字符串 s 的 前缀 是 s 的任何前导连续子字符串
题解:
直接模拟即可
代码(Go):
func isPrefixOfWord(sentence string, searchWord string) int {
s := strings.Split(sentence," ")
for re,v := range s{
for i,b := range searchWord{
if len(v) < len(searchWord) || rune(v[i]) != b{
break
}else if i == len(searchWord) - 1{
return re + 1
}
}
}
return -1
}
2500. 删除每行中的最大值
题目描述:
给你一个 m x n 大小的矩阵 grid ,由若干正整数组成。
执行下述操作,直到 grid 变为空矩阵:
从每一行删除值最大的元素。如果存在多个这样的值,删除其中任何一个。
将删除元素中的最大值与答案相加。
注意 每执行一次操作,矩阵中列的数据就会减 1 。
返回执行上述操作后的答案。
题解:
和前几天做过一个行列一起删的差不多,这个更简单,直接排序后按列删除即可
代码(Go):
func deleteGreatestValue(grid [][]int) int {
re := 0
for _,v := range grid {
sort.Ints(v)
}
for i,_ := range grid[0] {
temp := 0
for _,v := range grid {
temp = max(temp,v[i])
}
re += temp
}
return re
}
func max(x int, y int) int {
if x > y{
return x
}
return y
}
881. 救生艇
题目描述:
给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。
每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。
返回 承载所有人所需的最小船数 。
题解:
排序后双指针向中间靠拢,如果装不下就让重量大的单独一船,否则就让二人同船,这样就可以保证需要的船最少
代码(Go):
func numRescueBoats(people []int, limit int) int {
sort.Ints(people)
re := 0
l,r := 0, len(people) - 1
for l <= r {
if people[l] + people[r] > limit {
r--
}else{
l++
r--
}
re++
}
return re
}
151. 反转字符串中的单词
题目描述:
给你一个字符串 s ,请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
题解:
go直接调字符串分割函数然后倒序遍历即可,只需要注意一下前后的空格
代码(Go):
func reverseWords(s string) string {
temp := strings.Split(s," ")
var re string
for i := len(temp) - 1;i >= 0;i--{
if temp[i] != ""{
if re != ""{
re += " "
}
re += temp[i]
}
}
return re
}
总结
终于追上进度了,接下来感觉要补补理论,现在题做着越来越费劲了