LeetCode | 389. Find the Difference 字符串

Giventwo strings s and t which consist of only lowercase letters.

String t isgenerated by random shuffling string s andthen add one more letter at a random position.

Findthe letter that was added in t.

Example:

Input:

s = "abcd"

t = "abcde"

 

Output:

e

 

Explanation:

'e' is the letter that was added.

这一题可以使用两个数组,第一个数组用来存储s中每个字符的数量,第二个数组用来存储t中每个字符的数量,一旦当发现t中某个字符的数量多于s中某个字符的数量的时候,说明这个字符是插入的字符,直接返回就好了

这一题主要的知识点是,在python中,使用ord(a)可以获得字符a的ASCI值,使用chr(a)当a是整数的时候,可以获得a的ASCI值对于的整数,这一点一定要注意

classSolution(object):

    def findTheDifference(self, s, t):

        """

        :type s: str

        :type t: str

        :rtype: str

        """

        theSCheck = [0] * 27

        theTCheck = [0] * 27

        theA = ord('a')

        for i in s:

            theSCheck[ord(i) - theA] += 1

        for i in t:

            tmp = ord(i)

            theTCheck[tmp - theA] += 1

            if theTCheck[tmp - theA] >theSCheck[tmp - theA]:

                return i

        return 'a'

这一题还有一种更简单的解法,

classSolution(object):

    def findTheDifference(self, s, t):

        """

        :type s: str

        :type t: str

        :rtype: str

        """

        for i in t:

            if s.count(i) < t.count(i):

                return i

理论上来说,count的时间复杂度应该是O(N),这种方法的时间复杂度应该是O(n ^ 2)但是实际上下面这种方法比上面的方法的时间要快,我觉得可能是因为,对于python中的str而言,在创建的时间其每个字符的数量就已经知道了,查询起来可能只需要O(1)的时间,所以以后在str中统计某个字符的数量的时候,放心大胆的使用count,只需要O(1)的时间!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值