难度
标签
题目描述
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入: s1 = "abc", s2 = "bca"输出: true
示例 2:
输入: s1 = "abc", s2 = "bad"输出: false
说明:
0 <= len(s1) <= 1000 <= len(s2) <= 100
题解
1. 使用数组
class Solution {public boolean CheckPermutation(String s1, String s2) {if(s1.length() != s2.length()){return false;}int[] sum = new int[58];for(int i = 0; i < s1.length(); i++){int index = s1.charAt(i) - 'A';sum[index]++;}for(int i = 0; i < s2.length(); i++){int index = s2.charAt(i) - 'A';sum[index]--;if(sum[index] < 0) {return false;}}return true;}}
2. 使用map
import java.util.HashMap;class Solution {public boolean CheckPermutation(String s1, String s2) {if(s1.length() != s2.length()){return false;}HashMap<Character, Integer> map = new HashMap<>(s1.length() * 4 / 3 + 1);for(int i = 0; i < s1.length(); i++){char cur = s1.charAt(i);if(map.containsKey(cur)) {map.put(cur, map.get(cur) + 1);continue;}map.put(cur, 1);}for(int i = 0; i < s2.length(); i++){char cur = s2.charAt(i);if(!map.containsKey(cur) || map.get(cur) <= 0) {return false;}map.put(cur, map.get(cur) - 1);}return true;}}
