欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 【力扣】389.找不同

【力扣】389.找不同

2025/2/25 12:16:17 来源:https://blog.csdn.net/yun_shui_/article/details/144137352  浏览:    关键词:【力扣】389.找不同

问题描述

 思路解析

  • 只有小写字母,这种设计参数小的,直接桶排序
  • 我最开始的想法是使用两个不同的数组,分别存入他们单个字符转换后的值,然后比较是否相同。也确实通过了

  • 看了题解后,发现可以优化,首先因为t相比于s,是增加了一个字符。那么t的对应的那个单词一定是比s多的。因此可以只用一个字符数组就可以了
  • s中++,t--,只要数组中小于0,代表就是这个数字

代码

class Solution {public char findTheDifference(String s, String t) {/**只含有小写字母,用桶排序,然后对于0~25的数字是否一样,不一样则输出*/int len1=s.length();int len2=t.length();int[] arr1=new int[26];int[] arr2=new int[26];for(int i=0;i<len1;i++){arr1[s.charAt(i)-'a']++;}for(int j=0;j<len2;j++){arr2[t.charAt(j)-'a']++;}char res;for(int i=0;i<26;i++){if(arr1[i]!=arr2[i])return (char)(i+'a');}return ' ';}
}

优化后代码

 

class Solution {public char findTheDifference(String s, String t) {/**只含有小写字母,用桶排序,然后对于0~25的数字是否一样,不一样则输出*/int len1=s.length();int len2=t.length();int[] arr1=new int[26];for(int i=0;i<len1;i++){arr1[s.charAt(i)-'a']++;}for(int j=0;j<len2;j++){char ch=t.charAt(j);arr1[ch-'a']--;if(arr1[ch-'a']<0){return ch;}}return ' ';}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词