Go Java算法之找不同示例详解
作者:黄丫丫 时间:2021-10-29 19:37:08
找不同
给定两个字符串 s 和 t ,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例 1:
输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。
示例 2:
输入:s = "", t = "y"
输出:"y"
提示:
0 <= s.length <= 1000
t.length == s.length + 1
s 和 t 只包含小写字母
方法一:计数(Java)
首先遍历字符串 s,对其中的每个字符都将计数值加 1;然后遍历字符串 t,对其中的每个字符都将计数值减 1。
当发现某个字符计数值为负数时,说明该字符在字符串 t 中出现的次数大于在字符串 s 中出现的次数,因此该字符为被添加的字符。
class Solution {
public char findTheDifference(String s, String t) {
int[] cnt = new int[26];
for (int i = 0; i < s.length(); ++i) {
char ch = s.charAt(i);
cnt[ch - 'a']++;
}
for (int i = 0; i < t.length(); ++i) {
char ch = t.charAt(i);
cnt[ch - 'a']--;
if (cnt[ch - 'a'] < 0) {
return ch;
}
}
return ' ';
}
}
N :字符串的长度
Σ :字符集
时间复杂度:O(N)
空间复杂度:O(∣Σ∣)
方法二:求和(Go)
本方法主要是利用了ASCII码,按照字符的ASCII码进行查找不同的字符。一次遍历计算出两个字符串的ASCII总和,根据差值既可以得出插入的字符
将字符串 s 中每个字符的 ASCII 码的值求和,得到 A_s
对字符串 t 同样的方法得到 A_t
两者的差值 A_t-A_s即代表了被添加的字符。
func findTheDifference(s, t string) byte {
sum := 0
for _, ch := range s {
sum -= int(ch)
}
for _, ch := range t {
sum += int(ch)
}
return byte(sum)
}
时间复杂度:O(N)
空间复杂度:O(1)
来源:https://juejin.cn/post/7135454951706705957
标签:Go,Java,算法,找不同
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java如何使用自己的maven本地仓库详解
2022-08-01 12:13:44
mybatis查询返回Map<String,Object>类型的讲解
2022-12-25 02:07:38
![](https://img.aspxhome.com/file/2023/4/59534_0s.png)
Intellij IDEA 2018配置Java运行环境的方法步骤
2023-06-08 09:56:50
![](https://img.aspxhome.com/file/2023/6/62456_0s.png)
OpenCV画任意圆弧曲线
2023-06-22 19:28:44
![](https://img.aspxhome.com/file/2023/5/94045_0s.jpg)
Java Spring开发环境搭建及简单入门示例教程
2021-08-17 07:36:28
IDEA 2022 中的Lombok 使用基础教程
2023-04-09 21:57:09
![](https://img.aspxhome.com/file/2023/7/64547_0s.png)
java基于包结构的请求路由实现实例分享
2021-10-23 13:10:18
mybatis-plus排除非表中字段的操作
2022-04-22 03:48:41
WebSocket实现Web聊天室功能
2023-11-27 06:10:52
![](https://img.aspxhome.com/file/2023/9/60189_0s.jpg)
浅谈JVM垃圾回收有哪些常用算法
2022-02-28 16:51:56
iOS应用中使用Toolbar工具栏方式切换视图的方法详解
2023-06-21 09:24:48
![](https://img.aspxhome.com/file/2023/6/98646_0s.png)
SpringCloud搭建netflix-eureka微服务集群的过程详解
2023-09-02 18:11:52
![](https://img.aspxhome.com/file/2023/3/58293_0s.jpg)
Android之使用Bundle进行IPC详解
2023-09-27 22:44:56
Springboot 异步任务和定时任务的异步处理
2022-08-20 07:21:12
![](https://img.aspxhome.com/file/2023/8/64928_0s.webp)
Java中常见的编码集问题总结
2023-11-29 01:40:04
![](https://img.aspxhome.com/file/2023/5/60115_0s.png)
java之路径分隔符介绍
2022-12-14 22:35:23
利用Lambda表达式创建新线程案例
2023-08-26 23:16:00
修改maven本地仓库路径的方法
2022-08-09 13:44:16
浅谈springioc实例化bean的三个方法
2022-05-18 08:37:56
SpringMVC项目异常处理机制详解
2023-03-12 13:13:25