面试题 01.02. 判定是否互为字符重排
难度简单
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入: s1 = "abc", s2 = "bca" 输出: true
示例 2:
输入: s1 = "abc", s2 = "bad" 输出: false
说明:
0 <= len(s1) <= 100 0 <= len(s2) <= 100
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/check-permutation-lcci 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution { public boolean CheckPermutation(String s1, String s2) { // 1. 定义一个数组保存26个字母的个数 //2.分别遍历两个字符串。 //3.比较两个数组是否完全相同 int[] arr1 =new int[26]; int[] arr2 =new int[26]; //先判断字符串长度 if(s1==null|| s1.length()==0|| s2==null|| s2.length()==0){ return false ; } if(s1.length()!=s2.length()){ return false ; } // 循环统计 for(int i=0;i<s1.length();i++){ int a1 = s1.charAt(i)-'a'; arr1[a1] +=1; int a2 = s2.charAt(i)-'a'; arr2[a2] +=1; } for(int i=0;i<26;i++){ if(arr1[i]!=arr2[i])return false ; } return true ; } } /** 执行结果: 通过 显示详情 执行用时: 0 ms , 在所有 Java 提交中击败了 100.00% 的用户 内存消耗: 36.2 MB , 在所有 Java 提交中击败了 94.55% 的用户 **/方法二 HashMap
class Solution { public boolean CheckPermutation(String s1, String s2) { // 1. 定义两个HashMap //2.分别遍历两个字符串。 //3.比较两个数组是否完全相同 HashMap<Character,Integer> hashMap1 =new HashMap<>(); HashMap<Character,Integer> hashMap2 =new HashMap<>(); //先判断字符串长度 if(s1==null|| s1.length()==0|| s2==null|| s2.length()==0){ return false ; } if(s1.length()!=s2.length()){ return false ; } // 循环统计 for(int i=0;i<s1.length();i++){ char a1 = s1.charAt(i); if(hashMap1.containsKey(a1)){ hashMap1.put(a1,hashMap1.get(a1)+1); }else{ hashMap1.put(a1,1); } char a2 = s2.charAt(i); if(hashMap2.containsKey(a2)){ hashMap2.put(a2,hashMap2.get(a2)+1); }else{ hashMap2.put(a2,1); } } if(hashMap1.size()!=hashMap2.size()){ return false; } Set<Character> set1 = hashMap1.keySet(); for(char ch :set1){ if( hashMap1.get(ch)!=hashMap2.get(ch)){ return false ; } } return true ; } }