String Permutation
Given two strings, write a method to decide if one is a permutation of the other.
Have you met this question in a real interview? Yes
Example
abcd is a permutation of bcad, but abbe is not a permutation of abe
Tags Expand
String Permutation
思路
- 利用hashmap 可以实现O(n)
- 或者利用排序, O(nlogn)
public class Solution {
/**
* @param A a string
* @param B a string
* @return a boolean
*/
public boolean stringPermutation(String A, String B) {
// Write your code here
if (A == null || B == null || A.length() != B.length()) {
return false;
}
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < A.length(); i++) {
char cur = A.charAt(i);
if (map.containsKey(cur)) {
map.put(cur, map.get(cur) + 1);
} else {
map.put(cur, 1);
}
}
for (int i = 0; i < B.length(); i++) {
char cur = B.charAt(i);
if (map.containsKey(cur)) {
map.put(cur, map.get(cur) - 1);
} else {
return false;
}
if (map.get(cur) == 0) {
map.remove(cur);
}
}
return map.size() == 0;
}
}
排序
public boolean stringPermutation(String str1, String str2) {
if (str1.length() != str2.length())
return false;
char[] a = str1.toCharArray();
char[] b = str2.toCharArray();
Arrays.sort(a);
Arrays.sort(b);
return Arrays.equals(a, b);
}