高密市建设局网站,如何得到网站后台权限,新网虚拟主机,平台公司和国企的区别目录
1. Excel表列名称 ★
2. 同构字符串 ★★
3. 分割回文串 II ★★★
#x1f31f; 每日一练刷题专栏
C/C 每日一练 专栏
Python 每日一练 专栏 1. Excel表列名称
给你一个整数 columnNumber #xff0c;返回它在 Excel 表中相对应的列名称。
例如#xff1…
目录
1. Excel表列名称 ★
2. 同构字符串 ★★
3. 分割回文串 II ★★★ 每日一练刷题专栏
C/C 每日一练 专栏
Python 每日一练 专栏 1. Excel表列名称
给你一个整数 columnNumber 返回它在 Excel 表中相对应的列名称。
例如
A - 1
B - 2
C - 3
...
Z - 26
AA - 27
AB - 28
...示例 1
输入columnNumber 1
输出A示例 2
输入columnNumber 28
输出AB示例 3
输入columnNumber 701
输出ZY示例 4
输入columnNumber 2147483647
输出FXSHRXW提示
1 columnNumber 2^31 - 1
代码
class Solution(object):def convertToTitle(self, n)::type n: int:rtype: strd {}r []a for i in range(1, 27):d[i] chr(64 i)if n 26:return d[n]if n % 26 0:n n / 26 - 1a Zwhile n 26:s n % 26n n // 26r.append(s)result d[n]for i in r[::-1]:result d[i]return result a# %%
s Solution()
print(s.convertToTitle(1))
print(s.convertToTitle(28))
print(s.convertToTitle(701))
print(s.convertToTitle(2147483647))输出
A AB ZY FXSHRXW 2. 同构字符串
给定两个字符串 s 和 t判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t 那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符同时不改变字符的顺序。不同字符不能映射到同一个字符上相同字符只能映射到同一个字符上字符可以映射到自己本身。
示例 1:
输入s egg, t add
输出true示例 2
输入s foo, t bar
输出false
示例 3
输入s paper, t title
输出true提示
可以假设 s 和 t 长度相同。
代码
class Solution(object):def isIsomorphic(self, s, t)::type s: str:type t: str:rtype: boolif len(s) ! len(t):return Falseif len(s) None or len(s) 2:return Truesmap {}for i in range(len(s)):if s[i] not in smap and t[i] in smap.values():return Falseif s[i] in smap and smap[s[i]] ! t[i]:return Falsesmap[s[i]] t[i]return True# %%
s Solution()
print(s.isIsomorphic(s egg, t add))
print(s.isIsomorphic(s foo, t bar))
print(s.isIsomorphic(s paper, t title))
输出
True False True 3. 分割回文串 II
给你一个字符串 s请你将 s 分割成一些子串使每个子串都是回文。
返回符合要求的 最少分割次数 。
示例 1
输入s aab
输出1
解释只需一次分割就可将 s 分割成 [aa,b] 这样两个回文子串。示例 2
输入s a
输出0示例 3
输入s ab
输出1提示
1 s.length 2000s 仅由小写英文字母组成
代码
class Solution:def minCut(self, s):size len(s)is_palindrome [[False] * size for _ in range(size)]for r in range(size):for l in range(r, -1, -1):if s[l] s[r] and (r - l 2 or is_palindrome[l 1][r - 1]):is_palindrome[l][r] Truedp [i for i in range(size)]for i in range(1, size):if is_palindrome[0][i]:dp[i] 0else:dp[i] min(dp[j] 1 for j in range(i) if is_palindrome[j 1][i])return dp[-1]# %%
s Solution()
print(s.minCut(s aab))
print(s.minCut(s a))
print(s.minCut(s ab))输出
1 0 1 其它做法
class Solution(object): def minCut(self, s): n len(s) dp [n] * n for i in range(n): if s[0: i 1] s[0: i 1][::-1]: dp[i] 0 continue for j in range(i): if s[j 1: i 1] s[j 1: i 1][::-1]: dp[i] min(dp[i], dp[j] 1) return dp[n - 1] 每日一练刷题专栏
✨ 持续努力奋斗做强刷题搬运工 点赞你的认可是我坚持的动力
★ 收藏你的青睐是我努力的方向
✏️ 评论你的意见是我进步的财富 C/C 每日一练 专栏 Python 每日一练 专栏