367. 有效的完全平方数
题目描述
给你一个正整数 num 。如果 num 是一个完全平方数,则返回 true ,否则返回 false 。 完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。 不能使用任何内置的库函数,如 sqrt 。 示例 1: 输入:num = 16 输出:true 解释:返回 true ,因为 4 * 4 = 16 且 4 是一个整数。 示例 2: 输入:num = 14 输出:false 解释:返回 false ,因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。
解题思路
依然是暴力循环,注意range的取值范围,因为是平方,所有只要到16就可以了,如果选择更大的数不仅没有意义,而且会超出时间限制。
解题代码
1. def isPerfectSquare(num): 2. for i in range(1,2**16): 3. if i**2 == num: 4. return True 5. return False
383. 赎金信
题目描述
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入:ransomNote = "a", magazine = "b" 输出:false 示例 2: 输入:ransomNote = "aa", magazine = "ab" 输出:false 示例 3: 输入:ransomNote = "aa", magazine = "aab" 输出:true
解题思路
首先用集合判断,是不是ransomNote中的元素在magazine都出现了,也就是集合相交还等于randomnote的集合。然后就是判断,每个元素在ransomnote中出现的次数是不是都小于magazine中出现的次数,如果不是返回False。两个检测都通过的话,返回True。
解题代码
1. def canConstruct(ransomNote:str,magazine:str): 2. if set(ransomNote)&set(magazine) != set(ransomNote): 3. return False 4. else: 5. for i in set(ransomNote): 6. if ransomNote.count(i) > magazine.count(i): 7. return False 8. return True
387. 字符串中的第一个唯一字符
题目描述
给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。 示例 1: 输入: s = "leetcode" 输出: 0 示例 2: 输入: s = "loveleetcode" 输出: 2 示例 3: 输入: s = "aabb" 输出: -1
解题思路
这个还是比较简单的,直接暴力循环,在s中数每一个i,如果等于1的话就返回索引,如果遍历完都不是1的话返回-1。
解题代码
1. def firstUniqChar(s: str): 2. for i in s: 3. if s.count(i) == 1: 4. return s.index(i) 5. else: 6. return -1
389. 找不同
题目描述
给定两个字符串 s 和 t ,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1: 输入:s = "abcd", t = "abcde" 输出:"e" 解释:'e' 是那个被添加的字母。 示例 2: 输入:s = "", t = "y" 输出:"y"
解题思路
用集合的补集,直接作差就可以得出后来增加的元素。
解题过程
1. def findTheDifference(self, s: str, t: str) -> str: 2. if s== "": 3. return t 4. else: 5. return str(set(t) - set(s))[2]
忽略了如果添加的元素本身就在原来的字符串中出现的这种情况,所以还是用暴力循环来写,遍历t,如果t中的i出现次数比s中多一次,那么这个i就是后来添加的元素。
1. def findTheDifference(s: str, t: str): 2. if s == "": 3. return t 4. else: 5. for i in t: 6. if t.count(i) - s.count(i) == 1: 7. return i