Go Java算法之找不同示例详解

 更新时间:2022年08月25日 09:13:28   作者:黄丫丫  
这篇文章主要为大家介绍了Go Java算法之找不同示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

找不同

给定两个字符串 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)

以上就是Go Java算法之找不同示例详解的详细内容,更多关于Go Java 算法找不同的资料请关注脚本之家其它相关文章!

相关文章

  • Mybatis无法获取带有下划线前缀的字段的值问题

    Mybatis无法获取带有下划线前缀的字段的值问题

    这篇文章主要介绍了Mybatis无法获取带有下划线前缀的字段的值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • spring boot actuator监控超详细教程

    spring boot actuator监控超详细教程

    Spring Boot Actuator就是一款可以帮助你监控系统数据的框架,其可以监控很多很多的系统数据,接下来通过本文给大家介绍spring boot actuator监控超详细教程,感兴趣的朋友一起看看吧
    2021-10-10
  • springboot启动时如何指定spring.profiles.active

    springboot启动时如何指定spring.profiles.active

    这篇文章主要介绍了springboot启动时如何指定spring.profiles.active问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Springboot项目启动到一半卡住了,不报错问题及解决

    Springboot项目启动到一半卡住了,不报错问题及解决

    这篇文章主要介绍了Springboot项目启动到一半卡住了,不报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java设计模式之桥模式(Bridge模式)介绍

    Java设计模式之桥模式(Bridge模式)介绍

    这篇文章主要介绍了Java设计模式之桥模式(Bridge模式)介绍,本文讲解了为什么使用桥模式、如何实现桥模式、Bridge模式在EJB中的应用等内容,需要的朋友可以参考下
    2015-03-03
  • Java 基于TCP Socket 实现文件上传

    Java 基于TCP Socket 实现文件上传

    这篇文章主要介绍了Java 基于TCP Socket 实现文件上传的示例代码,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-12-12
  • Java中的三种校验注解的使用(@Valid,@Validated和@PathVariable)

    Java中的三种校验注解的使用(@Valid,@Validated和@PathVariable)

    本文主要介绍了Java中的三种校验注解的使用(@Valid,@Validated和@PathVariable),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 配置了jdk的环境idea却提示找不到jdk解决办法

    配置了jdk的环境idea却提示找不到jdk解决办法

    在使用Java编程语言进行开发时,IDEA是一个非常流行和强大的集成开发环境,这篇文章主要给大家介绍了关于配置了jdk的环境idea却提示找不到jdk的解决办法,需要的朋友可以参考下
    2023-12-12
  • springboot集成与使用Sentinel的方法

    springboot集成与使用Sentinel的方法

    这篇文章主要介绍了springboot集成与使用Sentinel的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 一篇文章带你入门java集合

    一篇文章带你入门java集合

    Java的集合类型都是对java.util包中Collection接口的继承,这里我们主要介绍依赖于collection的一些主分支,一起来看一下Java中的collection集合类型总结
    2021-08-08

最新评论