仿淘宝电商网站开发报价,企业网站建设太原网站建设,虎牙网页游戏大厅,中国软装网思路#xff1a;字母相互抵消的思路#xff0c;本题字符串中只包含小写字母26位#xff0c;那就新建record数组int[26]#xff0c;下标0-25#xff0c;代表小写字母a-z, 需要通过 某字符减a 来达到这一目的#xff1b;
class Solution {public boolean isAnagram(String…
思路字母相互抵消的思路本题字符串中只包含小写字母26位那就新建record数组int[26]下标0-25代表小写字母a-z, 需要通过 某字符减a 来达到这一目的
class Solution {public boolean isAnagram(String s, String t) {//这里record数组下标0-25代表小写字母a-z, 需要通过 某字符减a 来达到这一目的//字符相减得到数字如b-a 1,z-a25,因为字符ASCLL码中b比a大1z比a大25int[] record new int[26];//通过相互抵消的思路记录s字符串每个字符出现的次数for(int i0; is.length();i) {record[s.charAt(i) - a]; }//在t字符串中抵消字符出现就次数减1for(int j0; jt.length();j){record[t.charAt(j) - a]--;}//遍历看看抵消完是不是都是0for(int k 0;krecord.length;k){if(record[k]!0){return false;}}return true;}
}这个382题也是一样的道理只是抵消之后可能有的值会 小于0
class Solution {public boolean canConstruct(String ransomNote, String magazine) {if(ransomNote.length()magazine.length()) return false;//下标表示字母元素值表示次数int[] record new int[26];//抵消思想for(int i0;imagazine.length();i){record[magazine.charAt(i) - a];}for(int i0;iransomNote.length();i){record[ransomNote.charAt(i) - a]--;}for(int i0;irecord.length;i){if(record[i]0){return false;}}return true;}
}