Python 查找两个字符串间的差异程序
在这个教程中,我们将编写一个Python程序来查找两个给定字符串间的差异。这个问题可以在面试中被问到。让我们先理解问题陈述,然后再解决方案。
问题陈述 –
有两个给定的字符串 s 和 t。 字符串t是通过将字符串s随机洗牌,然后在任意随机位置添加了一个字符而生成的。我们需要编写一个Python程序,返回添加到 t 的字母。
示例
Input: s = "zxyc", t = "zxyce"
Output: "e"
Explanation: 'e' is the letter that was added.
示例
Input: s = "uvw", t = "wyu"
Output: "y"
Explanation: 'e' is the letter that was added.
约束条件:
应遵循以下约束条件 –
- 0 <= s.length <= 1000
t.length == s.length + 1
- s和t由小写英文字母组成。
Python程序
让我们了解以下Python程序。
示例
class Solution(object):
def findTheDifference(self, s, t):
ls_s = [s[i] for i in range(len(s))]
ls_t = [t[i] for i in range(len(t))]
for elem in ls_s:
ls_t.remove(elem)
return(ls_t[0])
obj = Solution()
s = "zxyc"
t = "zxyce"
print(obj.findTheDifference(s, t)
输出:
'e'
解释 –
在上面的代码中,我们定义了findThedifference()函数,它以两个字符串作为参数。我们使用列表推导将字符串转换为列表。现在,我们迭代 ls_s 列表,选择单个元素并将该元素从第二个列表 ls_t 中删除。如果从第二个列表中删除了所有元素,则表示两个给定字符串相同,否则返回第二个列表的第一个元素。
解决方案 – 2
让我们看看问题的另一个解决方案。
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
#sort both the strings
s_list = sorted(s)
t_list = sorted(t)
s_list.append(0) #to make the length equal else we will get list index out of bounds (1 extra char in string2)
for i in range(len(t_list)):
if s_list[i] != t_list[i]: #if character at i not same for both the strings, we get our answer
return t_list[i]
obj = Solution()
s = "zxyc"
t = "zxyce"
print(obj.findTheDifference(s, t)
输出:
e
说明 –
在本教程中,我们使用 sorted() 方法,将字符串转换为按照顺序排序的字符列表。我们创建了两个字符串列表,并添加了一个额外的元素0,以使长度相等;否则,我们将得到列表索引超出界限的错误。现在我们迭代t_list,并检查 s_list 的元素是否不等于t_list;如果匹配条件,则返回该元素。