力扣Lc21--- 389. 找不同(java版)-2024年3月26日

2024-03-27 04:28
文章标签 java 力扣 2024 不同 26 389 lc21

本文主要是介绍力扣Lc21--- 389. 找不同(java版)-2024年3月26日,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.题目描述
在这里插入图片描述
2.知识点
(1)在这段代码中:

     // 统计字符串s中每个字符的出现次数for (int i = 0; i < s.length(); i++) {count[s.charAt(i) - 'a']++;}

对于字符串s = “abcd”:

当 i = 0,s.charAt(i) = ‘a’,ASCII值为97。

97 - ‘a’ = 97 - 97 = 0
所以 count[0] 的值增加1,变为 count[0] = 1。
当 i = 1,s.charAt(i) = ‘b’,ASCII值为98。

98 - ‘a’ = 98 - 97 = 1
所以 count[1] 的值增加1,变为 count[1] = 1。
当 i = 2,s.charAt(i) = ‘c’,ASCII值为99。

99 - ‘a’ = 99 - 97 = 2
所以 count[2] 的值增加1,变为 count[2] = 1。
当 i = 3,s.charAt(i) = ‘d’,ASCII值为100。

100 - ‘a’ = 100 - 97 = 3
所以 count[3] 的值增加1,变为 count[3] = 1。

count[0] = 1(代表'a'的计数)
count[1] = 1(代表'b'的计数)
count[2] = 1(代表'c'的计数)
count[3] = 1(代表'd'的计数)

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  // 遍历字符串t,减少相应字符的计数for (int i = 0; i < t.length(); i++) {count[t.charAt(i) - 'a']--;}

对于字符串t = “abcde”:

当 i = 0,t.charAt(i) = ‘a’,ASCII值为97。

97 - ‘a’ = 97 - 97 = 0
所以 count[0] 的值减少1,变为 count[0] = 0。
当 i = 1,t.charAt(i) = ‘b’,ASCII值为98。

98 - ‘a’ = 98 - 97 = 1
所以 count[1] 的值减少1,变为 count[1] = 0。
当 i = 2,t.charAt(i) = ‘c’,ASCII值为99。

99 - ‘a’ = 99 - 97 = 2
所以 count[2] 的值减少1,变为 count[2] = 0。
当 i = 3,t.charAt(i) = ‘d’,ASCII值为100。

100 - ‘a’ = 100 - 97 = 3
所以 count[3] 的值减少1,变为 count[3] = 0。
当 i = 4,t.charAt(i) = ‘e’,ASCII值为101。

101 - ‘a’ = 101 - 97 = 4
所以 count[4] 的值减少1,变为 count[4] = -1。

count[0] = 0(代表'a'的计数)
count[1] = 0(代表'b'的计数)
count[2] = 0(代表'c'的计数)
count[3] = 0(代表'd'的计数)
count[4] = -1(代表'e'的计数)

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
在Java中使用两个char类型的字符进行加法操作时,实际上是对它们的ASCII码进行了加法操作。

例如,当你执行 ‘a’ + ‘c’,它会按照它们的ASCII码值进行加法计算。‘a’ 的ASCII码值是97,‘c’ 的ASCII码值是99。

所以,‘a’ + ‘c’ 的结果是 97 + 99 = 196。

public class Main {public static void main(String[] args) {char a = 'a';char c = 'c';int result = a + c;System.out.println(result);  // 输出196System.out.println((char) result);  // 输出对应的字符 'Ô'}
}


toCharArray() 是 Java 中 String 类的一个方法,它将字符串转换为一个字符数组。这个方法返回一个新的字符数组,其中包含字符串中的所有字符。

3.代码实现
方法1:

class Solution {public char findTheDifference(String s, String t) {int[] cnt=new int[26]; //新建一个数组,可以存储小写字母a~zfor(int i=0;i<s.length();i++){cnt[s.charAt(i)-'a']++;//原字符串中有出现过的字符 进行+1操作}for(int i=0;i<t.length();i++){cnt[t.charAt(i)-'a']--;//新字符串中出现过的字符进行-1操作//t.charAt(i)-'a',得到数组索引。计算该字符相对于字符'a'的偏移量,将字符映射到count数组的相应位置。//count[s.charAt(i) - 'a']: 获取count数组中对应索引的值。}// 找出计数小于0的那个字符,并返回它for(int i=0;i<26;i++){if(cnt[i]<0){return(char)(i+'a');//i+'a'将整数i与字符'a'的ASCII值相加,以获取相应字符的ASCII值。//(char) (i + 'a'):将得到的ASCII值转换为对应的字符。}}// 如果没有找到计数小于0的字符,返回空格           return ' ';}
}

方法2:

class Solution {public char findTheDifference(String s, String t) {int Sums=0;int Sumt=0;for(char c:s.toCharArray()){Sums+=c;}for(char m:t.toCharArray()){Sumt+=m;}int digit=Sumt-Sums;return (char)digit;}
}

方法3:

class Solution {public char findTheDifference(String s, String t) {int Sums=0;int Sumt=0;//  for(char c:s.toCharArray()) 加强的for循环for(int i=0;i<s.length();i++){Sums+=s.charAt(i);}// for(char m:t.toCharArray())for(int i=0;i<t.length();i++){Sumt+=t.charAt(i);}int digit=Sumt-Sums;return (char)digit;}
}

这篇关于力扣Lc21--- 389. 找不同(java版)-2024年3月26日的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/850934

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H