字符串在Python中转换为另一个字符串
假设我们有两个字符串str1和str2。而且它们的长度相同,我们必须检查是否可以通过执行零次或多次转换将str1转换为str2。
在一次转换中,我们可以将str1中所有出现的一个字符转换为其他任何小写英文字符。我们必须检查是否可以将str1转换为str2。
因此,如果输入类似于str1=“aabcc”,str2=“ccdee”,则输出为true,因为将'c'转换为'e'然后将'b'转换为'd'然后将'a'转换为'c'。在这里,我们必须记住转换顺序很重要。
为了解决这个问题,我们将遵循以下步骤-
定义一个功能compress()
。这将花费
n:=s的大小
一个:=一个新列表
数:=1
对于1到n范围内的i,执行
数:=数+1
在末尾插入计数
计数:=1
如果s[i]与s[i-1]不同,则
除此以外,
在末尾插入计数
返回一个
定义一个功能canConvert()
。这将花费str1,str2
一个:=compress(str1)
b:=压缩(str2)
n:=a的大小,m:=b的大小
d:=新映射
n:=n,m的最小值
i:=0
当i<n不为零时,
返回False
如果a[i]>b[i]不为零,则
我:=我+1
对于str2中的每个i,
d[i]:=1
如果我不在d中为非零,则
如果26-d的大小不为零或str1与str2相同,则返回True
让我们看下面的实现以更好地理解-
示例
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