力扣刷题记录——1108. IP 地址无效化、1281. 整数的各位积和之差 次数 、1295. 统计位数为偶数的数字、1394. 找出数组中的幸运数

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《力扣刷题记录——1108. IP 地址无效化、1281. 整数的各位积和之差 次数 、1295. 统计位数为偶数的数字、1394. 找出数组中的幸运数》。 

目录

1108. IP 地址无效化

        题目描述

        解题思路

        解题代码

1281. 整数的各位积和之差 

        题目描述

        解题思路

        解题代码

1295. 统计位数为偶数的数字

        题目描述

        解题思路

        解题代码

1394. 找出数组中的幸运数 

        题目描述

        解题思路

        解题代码


1108. IP 地址无效化

题目描述

给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。

所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."

示例 1:

输入:address = "1.1.1.1"
输出:"1[.]1[.]1[.]1"

示例 2:

输入:address = "255.100.50.0"
输出:"255[.]100[.]50[.]0"

解题思路

用字符串的replace就可以替换字母了。

解题代码

def defangIPaddr(address: str) -> str:
    return address.replace(".","[.]")

1281. 整数的各位积和之差 

题目描述

给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。

示例 1:

输入:n = 234
输出:15 
解释:
各位数之积 = 2 * 3 * 4 = 24 
各位数之和 = 2 + 3 + 4 = 9 
结果 = 24 - 9 = 15

示例 2:

输入:n = 4421
输出:21
解释: 
各位数之积 = 4 * 4 * 2 * 1 = 32 
各位数之和 = 4 + 4 + 2 + 1 = 11 
结果 = 32 - 11 = 21

解题思路

将整数转化为字符串,通过for循环进行累加和累乘,最终返回结果。

解题代码

def subtractProductAndSum(n: int) -> int:
    ji = 1
    he = 0
    for i in str(n):
        ji *= int(i)
        he += int(i)
    return ji-he

1295. 统计位数为偶数的数字

题目描述

给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。

示例 1:

输入:nums = [12,345,2,6,7896]
输出:2
解释:
12 是 2 位数字(位数为偶数) 
345 是 3 位数字(位数为奇数)  
2 是 1 位数字(位数为奇数) 
6 是 1 位数字 位数为奇数) 
7896 是 4 位数字(位数为偶数)  
因此只有 12 和 7896 是位数为偶数的数字

示例 2:

输入:nums = [555,901,482,1771]
输出:1 
解释: 
只有 1771 是位数为偶数的数字。

解题思路

用for循环遍历列表找出偶数,用长度%2就可以了。

解题代码

def findNumbers(nums: list[int]) -> int:
    count = 0
    for i in nums:
        if len(str(i))%2 == 0:
            count+=1
    return count

1394. 找出数组中的幸运数 

题目描述

在整数数组中,如果一个整数的出现频次和它的数值大小相等,我们就称这个整数为「幸运数」。

给你一个整数数组 arr,请你从中找出并返回一个幸运数。

  • 如果数组中存在多个幸运数,只需返回 最大 的那个。
  • 如果数组中不含幸运数,则返回 -1 

示例 1:

输入:arr = [2,2,3,4]
输出:2
解释:数组中唯一的幸运数是 2 ,因为数值 2 的出现频次也是 2 。

示例 2:

输入:arr = [1,2,2,3,3,3]
输出:3
解释:1、2 以及 3 都是幸运数,只需要返回其中最大的 3 。

示例 3:

输入:arr = [2,2,2,3,3]
输出:-1
解释:数组中不存在幸运数。

示例 4:

输入:arr = [5]
输出:-1

示例 5:

输入:arr = [7,7,7,7,7,7,7]
输出:7

解题思路

用字典将元素和出现的次数构成键值对,如果键和值一样,则添加到列表中,如果列表为空,那么返回-1,如果不为空,返回最大值。

解题代码

def findLucky(arr: list[int]) -> int:
    arr_dic = {}
    result = []
    for i in set(arr):
        arr_dic[i] = arr.count(i)
    for i in arr_dic.items():
        if i[0] == i[1]:
            result.append(i[0])
    if result == []:
        return -1
    else:
        return max(result)

猜你喜欢

转载自blog.csdn.net/weixin_63866037/article/details/128860257
今日推荐