Python|数组|动态规划|哈希表|双指针|字符串|单选记录:杨辉三角|电话号码的字母组合|验证回文串
创始人
2025-05-28 14:24:26

目录

1、杨辉三角(数组,动态规划)

选项代码

2、电话号码的字母组合(哈希表,字符串)

选项代码

3、验证回文串(双指针,字符串)

选项代码


1、杨辉三角(数组,动态规划)

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

https://www.bitekongjian.com/uploadfile/202505/5a74eec89a7d.gif

 

示例 1:

输入: numRows = 5

输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1

输出: [[1]]

 

提示:

  • 1 <= numRows <= 30

选项代码:

from typing import List
class Solution:def generate(self, numRows: int) -> List[List[int]]:if numRows == 0:return []if numRows == 1:return [[1]]if numRows == 2:return [[1], [1, 1]]result = [[1], [1, 1]] + [[] for i in range(numRows - 2)]for i in range(2, numRows):for j in range(i + 1):if j == 0 or j == i:result[i].append(1)else:result[i].append(result[i - 1][j - 1] + result[i - 1][j])return result
if __name__ == "__main__":s = Solution()print (s.generate( numRows = 5))

2、电话号码的字母组合(哈希表,字符串)

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

https://www.bitekongjian.com/uploadfile/202505/c34c0837b6b2882.png

 

示例 1:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = ""
输出:[]

示例 3:

输入:digits = "2"
输出:["a","b","c"]

 

提示:

  • 0 <= digits.length <= 4
  • digits[i] 是范围 ['2', '9'] 的一个数字。

选项代码:

from typing import List
class Solution:def letterCombinations(self, digits: str) -> List[str]:letters = [[],[],['a', 'b', 'c'],['d', 'e', 'f'],['g', 'h', 'i'],['j', 'k', 'l'],['m', 'n', 'o'],['p', 'q', 'r', 's'],['t', 'u', 'v'],['w', 'x', 'y', 'z'],]combinations = []i = 0for d in digits:letter = letters[int(d)]if i == 0:for l in letter:combinations.append([l])else:added = []for c in combinations:j = 0origin_c = []origin_c += cfor l in letter:if j == 0:c.append(l)else:new_c = []new_c += origin_cnew_c.append(l)added.append(new_c)j += 1combinations += addedi += 1output = []for c in combinations:output.append(''.join(c))return output
# %%
s = Solution()
print(s.letterCombinations(digits = "23"))

3、验证回文串(双指针,字符串)

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

 

示例 1:

输入: "A man, a plan, a canal: Panama"

输出: true

解释:"amanaplanacanalpanama" 是回文串

示例 2:

输入: "race a car"

输出: false

解释:"raceacar" 不是回文串

 

提示:

  • 1 <= s.length <= 2 * 105
  • 字符串 s 由 ASCII 字符组成

选项代码:

class Solution(object):def isPalindrome(self, s):""":type s: str:rtype: bool"""i = 0j = len(s) - 1while i < j:if s[i].isalnum() and s[j].isalnum():if s[i].upper() == s[j].upper():i += 1j -= 1else:return Falseelse:if not s[i].isalnum():i += 1if not s[j].isalnum():j -= 1return True
# %%
s = Solution()
print(s.isPalindrome("A man, a plan, a canal: Panama"))

相关内容

热门资讯

2025上半年哪些国内新游最赚... 文 | 点点数据,作者 | April Z转眼间2025年已经过半,根据今年已经发布的《中国游戏产业...
两度易主、三任托管,这一次弘元... 文 | 华夏能源网在第二次破产重整后,“光伏老厂”无锡尚德迎来新一任托管方。华夏能源网(公众号hxn...
“身价暴涨”500%,蜜雪冰城... 文 | 电商在线“入行十年来,第一次见到这么贵的黄柠檬。”近日,“柠檬疯涨似黄金”“柠檬水成本飙升”...
青岛造芯新势力突击“联动”无锡... 7月11日复牌首日,长龄液压(605389.SH)以一字涨停告别两连跌阴霾,股价强势反弹的核心推力,...
对标泡泡玛特?AI玩具厂商的必... 文|执牛耳传媒从产业基础看,AI 玩具凭借场景多元、客群广泛、产业链成熟等优势,早已成为 AI 技术...