打卡记录
LK1——两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
def find_index(list , target): dic={} for index , num in list: another_num = target - num if another_num in dic: return [index , dic[another_num]] return NoneLK3——无重复字符的最长子串:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
解法1:将所有连续且不重复的字符串都记录下来,最后取其中的 最长字符串的长度;
def lengthOfLongestSubstring(s): L = [] D = [] for i in range(len(s)): if s[i] not in D: D.append(s[i]) else: L.append(D.copy()) del D[0:1+D.index(s[i])] D.append(s[i]) L.append(D) return len(max(L , key = len , default = ''))解法2:每次只存储当前遍历到的不重复字符串 和 历史最长字符串,最后再取二者中较长字符串的长度;
def lengthOfLongestSubstring(s): L = [] l1 = [] l2 = [] for i in range(len(s)): if s[i] not in l1: l1.append(s[i]) else: l2 = max([l1.copy() , l2] , key = len , default = '') del l1[0:1+l1.index(s[i])] l1.append(s[i]) return len(max([l1.copy() , l2] , key = len , default = ''))LK5——最长回文子串:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
def longestPalindrome(self, s: str) -> str: L = [] s2 = '' for i in range(len(s)): if s[i] not in L: L.append(s[i]) else: s1 = s[L.index(s[i]):i+1] L.append(s[i]) s2 = max([s1, s2] , key = len , default = '') if s2 != '': A = s2 elif s2 == '' and s == '': A = s elif s2 == '' and s != '': A = s[0] return ALK9——回文数:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
def isPalindrome(x): if [i for i in str(x)] == [i for i in str(x)][::-1]: return True return FalseLK13——罗马数字转整数:给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况: I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
def romanToInt(s): dic = {'I':1 , 'V':5 , 'X':10 , 'L':50 , 'C':100 , 'D':500 , 'M':1000} new_int = [dic[i] for i in s] N = new_int[-1] for i in range(len(new_int) - 1): if new_int[i] >= new_int[i+1]: N = N + new_int[i] else: N = N - new_int[i] return N