不明白关于同构字符串的leetcode问题



在leetcode问题中,同构字符串的输入输出为false

问题是……

给定两个字符串st,判断它们是否同构

如果s中的字符可以替换为t,则st两个字符串是同构的。

所有出现的字符都必须替换为另一个字符,同时保持字符的顺序。两个字符不能映射到同一个字符,但一个字符可以映射到自身。

示例1:

输入:s = "egg", t = "add">
输出:true

示例2:

输入:s = "foo", t = "bar">
输出:false

示例3:

输入:s = "paper", t = "title">
输出:true

"bbbaaaba"
"aaabbbba"

我不清楚,因为如果我们按照指示,我相信我们应该有true作为答案。

我对这个问题的理解是,如果说y取代x,那么来自s,x的任何字符只能被来自b,y的字符取代。

首先,字符串st必须具有相同的长度,否则return false

我们知道,如果x没有被任何其他字符yb替换,则x被ya替换,其中ya!=yb

我们还知道,从指令中我们可以自由地用两个字符串中的相同字符替换任何字符。

必须在保持字符顺序的前提下进行替换

对于我上面给出的示例,我的解决方案如下:

s = "bbbaaaba"
t = "aaabbbba"
for index = 0, replace b with a, so b -> a
for index = 1, replace b with a, so b -> a # we can do this because a has already
replaced b
for index = 2, replace b with a, so b -> a # same reasoning as above
for index = 3, replace a with b, so a -> b # we have not replaced any characters from
s with the character b, so this is allowed
for index = 4, replace a with b, so a -> b 
for index = 5, replace a with b, so a -> b
for index = 6, replace b with b,           # this is allowed because both characters
from each string s, and t match at the
current index
for index = 7, replace a with a            # same reasoning as before

完成后,我们应该返回true成功,为什么答案应该是假的?

All出现的字符必须用另一个字符替换。

如果选择将b替换为a,则原字符串中的所有b都需要更改为a。因此,字符串将是aaabbbab,而不是期望的答案。因此答案是false

相关内容

  • 没有找到相关文章

最新更新