网站关于我们怎么做单页面,新华舆情监测平台,js做各类图表网站,域名制作网站提示#xff1a;此文章仅作为本人记录日常学习使用#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案 一、题目
给定两个字符串 s 和 t #xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意#xff1a;若 s 和 t 中每… 提示此文章仅作为本人记录日常学习使用若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、题目二、思路三、解决方案 一、题目
给定两个字符串 s 和 t 编写一个函数来判断 t 是否是 s 的字母异位词。 注意若 s 和 t 中每个字符出现的次数都相同则称 s 和 t 互为字母异位词。
二、思路
①若 s 和 t 互为字母异位词则s.length()一定等于t.length()。 ②若 s 和 t 互为字母异位词则 s 和 t 中每个字符出现的次数都相同。 如果我们能抓住这两个特点那么问题就很好解决了。我们可以使用跟【389. 找不同】一样的思想
创建一个长度为26个的int[ ]数组用来代表a~z这26个英文字母。遍历字符串 s 在这个数组中给字符串 s 中的每个字符的值都1。遍历字符串 t 在这个数组中给字符串 t 中的每个字符串的值都-1。若出现数组array中某一个元素的值小于0那么就说明字符串s中所有的字符个数与字符串t中所有的字符个数不相等。也就是说字符串s和字符串t存在不同的字符所以他们一定不互为字母异位词。
三、解决方案
语言Java 执行耗时3 ms 内存消耗41.7 MB
class Solution {public boolean isAnagram(String s, String t) {int[] array new int[26];if (s.length() ! t.length()) {return false;}for (int i 0; i s.length(); i) {char ch s.charAt(i);array[ch - a];}for (int i 0; i t.length(); i) {char ch t.charAt(i);array[ch - a]--;if (array[ch - a] 0) {return false;}}return true;}
}