创作灵感:
python函数每次都是用的时候才会去查,今天做一道leetcode的时候用到ord函数,2663. 字典序最小的美丽字符串,对于初学者来讲有必要了解一下常用的内置函数
ord()
函数是Python内置函数之一,用于返回单个字符对应的Unicode码点(即整数表示)。该函数的用途主要是在需要将字符转换为其对应的数字表示时使用,尤其是在处理字符编码、加密算法等场景下。
使用方法
ord(character)
参数
character
:一个字符,即长度为1的字符串。
返回值
- 返回值是该字符在Unicode中的码点,类型为整数。
示例
- 将字符转换为Unicode码点:
# Example of using ord() function
print(ord('A')) # Output: 65
print(ord('a')) # Output: 97
print(ord('0')) # Output: 48
print(ord('中')) # Output: 20013
- 使用ord()和chr()来实现字符与其Unicode码点之间的相互转换:
# Example of using ord() and chr() together
char = 'A'
unicode_code = ord(char)
print(f"Unicode code point of '{char}' is {unicode_code}") # Output: 65
# Converting back to character
original_char = chr(unicode_code)
print(f"Character for Unicode code point {unicode_code} is '{original_char}'") # Output: 'A'
实际应用场景
- 字符编码转换:在处理不同字符集和编码格式时,
ord()
函数可以帮助将字符转换为其对应的编码表示。 - 加密与解密:在一些简单的加密算法(如凯撒密码)中,需要将字符转换为数字进行加密运算。
- 排序与比较:在自定义排序或比较算法中,可以使用
ord()
函数将字符转换为其Unicode码点进行数值比较。
注意事项
ord()
函数的参数必须是单个字符,如果传入的字符串长度不为1,则会引发TypeError
。- 如果需要将多个字符的字符串逐个转换为其对应的Unicode码点,可以使用循环或列表推导式。
# Converting a string to a list of Unicode code points
string = "Hello, 世界"
unicode_points = [ord(char) for char in string]
print(unicode_points)
# Output: [72, 101, 108, 108, 111, 44, 32, 19990, 30028]
回到这道题:
class Solution:
def smallestBeautifulString(self, s: str, k: int) -> str:
a=ord('a')
k+=a
s=list(map(ord,s))
n=len(s)
i=n-1
s[i]+=1
while i<n:
if s[i]==k: #需要进位
if i==0: #无法进位
return ""
s[i]=a
i-=1
s[i]+=1
elif i and s[i] == s[i-1] or i>1 and s[i] == s[i-2]:
s[i]+=1 #如果s[i] 和左侧的字符形成回文串,就继续增加 s[i]
else:
i +=1 #反过来检查后面是否有回文串
return ''.join(map(chr,s))