本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找》。
目录
709. 转换成小写字母
题目描述
解题思路
解题代码
771. 宝石与石头
题目描述
解题思路1
解题代码
704. 二分查找
题目描述
解题思路
解题代码
709. 转换成小写字母
题目描述
给你一个字符串
s
,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。示例 1:
输入:s = "Hello" 输出:"hello"示例 2:
输入:s = "here" 输出:"here"示例 3:
输入:s = "LOVELY" 输出:"lovely"
解题思路
用lower直接转成小写字母就可以了。
解题代码
def toLowerCase(s: str):
return s.lower()
771. 宝石与石头
题目描述
给你一个字符串
jewels
代表石头中宝石的类型,另有一个字符串stones
代表你拥有的石头。stones
中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。字母区分大小写,因此
"a"
和"A"
是不同类型的石头。示例 1:
输入:jewels = "aA", stones = "aAAbbbb" 输出:3示例 2:
输入:jewels = "z", stones = "ZZ" 输出:0
解题思路1
定义一个count,遍历jewels,在stones中数每一个元素,将结果累加起来,返回count。
解题代码
def numJewelsInStones(jewels: str, stones: str) -> int:
count = 0
for i in jewels:
count += stones.count(i)
return count
704. 二分查找
题目描述
给定一个
n
个元素有序的(升序)整型数组nums
和一个目标值target
,写一个函数搜索nums
中的target
,如果目标值存在返回下标,否则返回-1
。
示例 1:输入:nums
= [-1,0,3,5,9,12],target
= 9 输出: 4 解释: 9 出现在nums
中并且下标为 4示例 2:
输入:nums
= [-1,0,3,5,9,12],target
= 2 输出: -1 解释: 2 不存在nums
中因此返回 -1
解题思路
这题考察二分查找,定义两个指针去遍历列表,可以从两端向中间,也可以中间向两边,本题采用中间向两边,需要判断中间,防止左右不同时到达。
解题代码
def search(nums: list[int], target: int) -> int:
mid = len(nums) // 2
if len(nums)%2 == 0:
mid_l = len(nums) // 2-1
mid_r = len(nums) // 2
else:
mid_l = len(nums) // 2-1
mid_r = len(nums) // 2 + 1
if nums[mid] == target:
return mid
while mid_l>=0 and mid_r <=len(nums):
if nums[mid_l] == target:
return mid_l
else:
mid_l -= 1
if nums[mid_r] == target:
return mid_r
else:
mid_r+=1
return -1