389. 找不同(Java)

题目描述:

给定两个字符串 s 和 t ,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。

输入:

s = “abcd”, t = “abcde”

输出:

“e”
解释:‘e’ 是那个被添加的字母。

代码实现:

public class Main{
    public static void main(String[] args) {
        String s = "abcd";
        String t = "abcde";
        System.out.println(findTheDifference(s, t));//e
    }

    public static char findTheDifference(String s, String t) {
        //统计26个字母出现次数
        int[] arr = new int[26];
        //计数
        for (int i = 0; i < s.length(); i++) {
            arr[s.charAt(i) - 'a']++;//由于出现的都是小写字母,减去相应的ASCII码,数组下标都只会在0~25之间
        }
        //统计t
        for (int i = 0; i < t.length(); i++) {
            char c = t.charAt(i);
            arr[c - 'a']--;//出现对应的下标,则计数减一
            if (arr[c - 'a'] < 0) {
                return c;//如果出现数组值为负数的情况,则判断为添加的元素,直接返回
            }
        }
        return ' ';
    }
}

你可能感兴趣的:(力扣刷题,java,算法,开发语言)