Python 字符串转换
假设我们有两个字符串 str1 和 str2。它们的长度相同,我们需要检查是否可以通过零次或多次转换将 str1 转换为 str2。
在一次转换中,我们可以将 str1 中所有出现的一个字符转换为任何其他小写英文字母。我们需要检查是否可以将 str1 转换为 str2。
因此,如果输入类似于 str1 = "aabcc",str2 = "ccdee",则输出为 true,因为可以将 'c' 转换为 'e',然后将 'b' 转换为 'd',然后将 'a' 转换为 'c'。这里需要注意的是转换的顺序很重要。
为了解决这个问题,我们将遵循以下步骤:
定义一个函数 compress()。它将接收字符串 s
n := s 的大小
a := 新列表
count := 1
对于范围 1 到 n 中的 i,执行:
如果 s[i] 与 s[i-1] 不相同,则
将 count 插入到 a 的末尾
count:= 1
否则,
count := count + 1
将 count 插入到 a 的末尾
返回 a
定义一个函数 canConvert()。它将接收 str1,str2
a := compress(str1)
b := compress(str2)
n := a 的大小,m := b 的大小
d:= 新映射
n := n 和 m 的最小值
i := 0
当 i<n 为非零时,执行:
如果 a[i] > b[i] 为非零,则
返回 False
i := i + 1
对于 str2 中的每个 i,执行:
如果 i 不在 d 中,则
d[i]:= 1
如果 26 - d 的大小为非零或 str1 与 str2 相同,则返回 True,否则返回 False
让我们看看下面的实现,以便更好地理解:
示例
class Solution(object):
def compress(self,s):
n = len(s)
a = []
count = 1
for i in range(1,n):
if s[i]!=s[i-1]:
a.append(count)
count=1
else:
count+=1
a.append(count)
return a
def canConvert(self, str1, str2):
a = self.compress(str1)
b = self.compress(str2)
n = len(a)
m = len(b)
d={}
n = min(n,m)
i = 0
while i<n:
if a[i]>b[i]:
return False
i+=1
for i in str2:
if i not in d:
d[i]=1
return True if 26-len(d) or str1 == str2 else False
ob = Solution()
print(ob.canConvert("aabcc", "ccdee"))输入
"aabcc", "ccdee"
输出
True
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP