力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《力扣刷题记录——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

猜你喜欢

转载自blog.csdn.net/weixin_63866037/article/details/128774548