Example 34
找不同
题目概述:给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t中被添加的字母。
示例 1:
输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。
示例 2:
输入:s = "", t = "y"
输出:"y"
解题思路:将字符串s中每个字符的 ASCII 码的值求和,得到As对字符串t同样的方法得到At。两者的差值At-As即代表了被添加的字符。
解题步骤:
1. 定义变量as、at分别记录字符串s、t中各个字符的ASCII 码的值的和。
2. 分别计算字符串s、t中各个字符的ASCII 码的值的和并存储到as、at中。
3. 将at - as转换为char类型并返回,即为被添加的字符。
示例代码如下:
public class FindDifferent { /** * 给定两个字符串 s 和 t,它们只包含小写字母。 * 字符串 t由字符串 s 随机重排,然后在随机位置添加一个字母。 * 请找出在 t中被添加的字母。 * 示例 1: * 输入:s = "abcd", t = "abcde" * 输出:"e" * 解释:'e' 是那个被添加的字母。 * 示例 2: * 输入:s = "", t = "y" * 输出:"y" * 来源:力扣(LeetCode) * 链接:https://leetcode.cn/problems/find-the-difference */ public static void main(String[] args) { FindDifferent fd = new FindDifferent(); System.out.println(fd.findTheDifference("abcd", "abcde")); // e } /** * 官方 * * @param s * @param t * @return */ public char findTheDifference(String s, String t) { int as = 0, at = 0; for (int i = 0; i < s.length(); ++i) { as += s.charAt(i); } for (int i = 0; i < t.length(); ++i) { at += t.charAt(i); } return (char) (at - as); } }