思路:

  1. 使用HashMap记录字符串s中每个字符出现的次数。
  2. 遍历字符串t,对于每个字符,如果在HashMap中存在并且次数大于0,则将其次数减1。
  3. 最后剩下的字符即为添加的字母。

代码如下:

import java.util.HashMap;

public class Solution {
    public char findTheDifference(String s, String t) {
        HashMap<Character, Integer> map = new HashMap<>();
        for (char c : s.toCharArray()) {
            map.put(c, map.getOrDefault(c, 0) + 1);
        }
        for (char c : t.toCharArray()) {
            if (map.containsKey(c) && map.get(c) > 0) {
                map.put(c, map.get(c) - 1);
            } else {
                return c;
            }
        }
        return ' ';
    }
}

复杂度分析:

  • 时间复杂度:遍历字符串s和t,时间复杂度为O(max(n, m)),其中n和m分别为字符串s和t的长度。
  • 空间复杂度:使用了HashMap来存储字符出现的次数,空间复杂度为O(n),其中n为字符串s的长度
给定两个字符串s和t 它们只包含小写字母。字符串t是由s中的字母随机打乱之后在随机的一个位置添加一个字母生成的。请找出那个添加的字母。比如:s = abcdt = baedc输出:e请给出思路并提供代码Java

原文地址: https://www.cveoy.top/t/topic/ipCz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录