LeetCode—— 389 找不同

问题描述

给定两个字符串 s 和 t,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

示例:

  • 输入:
  • s = "abcd"
  • t = "abcde"
  • 输出:
  • e
  • 解释:
  • 'e' 是那个被添加的字母。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-difference
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

执行结果

代码描述

思路:定义一个数组,长度为26,索引表示字母,值表示此字母出现的次数。扫描 s ,填充arr, 然后扫描 t ,对出现的进行--,直到遇到一个字母对应的值为0,返回该字母。时间复杂度 O(n), 空间复杂度 O(1)

class Solution {
public:
    char findTheDifference(string s, string t) {
        int arr[26] = {0};
        for(int i = 0; i < s.size(); ++i)
        {
            ++arr[s[i] - 'a'];
        }
        int i = 0;
        for(; i < t.size(); ++i)
        {
            if(arr[t[i] - 'a'] <= 0)
                break;
            else
                --arr[t[i]-'a'];
        }
        return t[i];
    }
};
发布了367 篇原创文章 · 获赞 100 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_34732729/article/details/103602145