力扣第34刷-找不同

简介: 力扣第34刷-找不同

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);
    }
}
相关文章
|
4天前
|
存储 算法 C++
刷LeetCode
刷LeetCode
|
8月前
力扣每日一刷(2023.9.14)
力扣每日一刷(2023.9.14)
29 0
|
8月前
|
算法 索引
力扣每日一刷(2023.9.5)
力扣每日一刷(2023.9.5)
38 1
|
8月前
|
机器人
力扣每日一刷(2023.9.11)
力扣每日一刷(2023.9.11)
44 0
|
8月前
|
算法 索引
力扣每日一刷(2023.9.4)
力扣每日一刷(2023.9.4)
18 0
|
8月前
|
算法 测试技术
力扣每日一刷(2023.9.6)
力扣每日一刷(2023.9.6)
36 0
|
8月前
|
监控
力扣每日一刷(2023.9.8)
力扣每日一刷(2023.9.8)
23 0
|
8月前
力扣每日一刷(2023.9.24)(二)
力扣每日一刷(2023.9.24)
32 0
|
8月前
|
存储 图计算 索引
力扣每日一刷(2023.9.24)(一)
力扣每日一刷(2023.9.24)
34 0
|
SQL 算法 搜索推荐
继续刷Leetcode,第18篇
继续刷Leetcode,第18篇
100 0
继续刷Leetcode,第18篇