力扣第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);
    }
}
相关文章
|
前端开发 JavaScript API
前端 excelex 包可将数据保存为 xls、xlsx、csv、txt 文件(支持单元格样式、合并单元格等)
前端 excelex 包可将数据保存为 xls、xlsx、csv、txt 文件(支持单元格样式、合并单元格等)
366 1
|
缓存 编译器
软件体系结构 - 指令集架构
软件体系结构 - 指令集架构
313 0
|
JSON 小程序 数据可视化
手把手带你开发一款云开发版点餐小程序,微信扫码点餐,用户端和后厨端都有
手把手带你开发一款云开发版点餐小程序,微信扫码点餐,用户端和后厨端都有
1297 0
|
8月前
|
JavaScript 安全 前端开发
关于Node.js,一定要学这个10+万Star项目 !!
一篇关于Node.js的宝藏项目——Node.js Best Practices。该项目在GitHub上已有102k Star,汇集了100+条最佳实践,涵盖架构、安全、性能等多方面。每条实践不仅有简明说明和详细解释,还附带代码示例及资源链接。文中通过三个实战案例(利用CPU多核、避免阻塞事件循环、使用中间件处理错误)展示了其实际应用价值,并推荐了几条对前端转Node.js开发者特别有用的最佳实践。强烈建议每位Node.js开发者学习此项目,理解“怎么做”与“为什么要这么做”,以提升开发能力。
312 3
|
12月前
|
API
鸿蒙开发:自定义一个英文键盘
实现方式呢,有很多种,目前采用了比较简单的一种,如果大家采用网格Grid组件实现方式,也是可以的,但是需要考虑每行的边距以及数据,还有最后两行的格子占位问题。
230 4
鸿蒙开发:自定义一个英文键盘
|
12月前
|
人工智能 自然语言处理 算法
“幽灵职位”泛滥:招聘广告背后的真相与求职者的困境
“幽灵职位”泛滥:招聘广告背后的真相与求职者的困境
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
这篇文章讨论了Java单继承的设计原因,指出Java不支持多继承主要是为了避免方法名冲突等混淆问题,尽管Java类不能直接继承多个父类,但可以通过接口和继承链实现类似多继承的效果。
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
|
存储 缓存 NoSQL
京东面试:亿级黑名单 如何设计?亿级查重 呢?(答案含:布隆过滤器、布谷鸟过滤器)
尼恩,40岁的老架构师,近期在读者交流群中分享了几个大厂面试题及其解决方案。这些问题包括亿级数据查重、黑名单存储、电话号码判断、安全网址判断等。尼恩给出了三种解决方案:使用BitMap位图、BloomFilter布隆过滤器和CuckooFilter布谷鸟过滤器。这些方法不仅高效,还能显著提升面试表现。尼恩还建议大家系统化学习,刷题《尼恩Java面试宝典PDF》,并提供简历修改和面试辅导,帮助大家实现“offer自由”。更多技术资料和PDF可在公众号【技术自由圈】获取。
|
JavaScript 前端开发 数据库
优化后端性能:如何使用异步编程提升系统响应速度
异步编程已成为现代后端系统性能优化的重要策略。通过避免阻塞操作,异步编程可以显著提高系统的响应速度和并发处理能力。本文章深入探讨了异步编程的基本概念,比较了常见的异步编程模型,并通过实际案例演示如何在Node.js和Python中实现异步操作,以提升系统性能。
|
编解码 数据可视化 前端开发
ECharts 对比 Highcharts 使用教程
ECharts 对比 Highcharts 使用教程
553 1