python的ord函数,初学者必看

创作灵感:

        python函数每次都是用的时候才会去查,今天做一道leetcode的时候用到ord函数,2663. 字典序最小的美丽字符串,对于初学者来讲有必要了解一下常用的内置函数

ord()函数是Python内置函数之一,用于返回单个字符对应的Unicode码点(即整数表示)。该函数的用途主要是在需要将字符转换为其对应的数字表示时使用,尤其是在处理字符编码、加密算法等场景下。

使用方法

ord(character)

参数

  • character:一个字符,即长度为1的字符串。

返回值

  • 返回值是该字符在Unicode中的码点,类型为整数。

示例

  1. 将字符转换为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

  1. 使用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))
            

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值