在leetcode问题中,同构字符串的输入输出为false
。
问题是……
给定两个字符串
s
和t
,判断它们是否同构如果
s
中的字符可以替换为t
,则s
和t
两个字符串是同构的。所有出现的字符都必须替换为另一个字符,同时保持字符的顺序。两个字符不能映射到同一个字符,但一个字符可以映射到自身。
示例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
的字符取代。
首先,字符串s
和t
必须具有相同的长度,否则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
。