描述:
给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。
置换的意思是,通过改变顺序可以使得两个字符串相等。
样例:
"abc"
为 "cba"
的置换。
"aabc"
不是 "abcc"
的置换。
Java代码:
字符串a,b的每一个字符都哈希到一个map里,a的字符加1,b的字符减1,统计为0 的时候删除字符,最后判断map的大小是否等于0。
public class Solution {
/**
* @param A a string
* @param B a string
* @return a boolean
*/
public boolean stringPermutation(String A, String B) {
//同一个对象
if(A == B){
return true;
}
//长度不一致
if(A == null || B == null || A.length()!=B.length()){
return false;
}
//空字符串
if(A.length() == 0){
return true;
}
//其他
Map<Character, Integer> charMap = new HashMap<Character, Integer>();
for(int i = 0 ; i < A.length() ; i++){
char a = A.charAt(i);
if(charMap.containsKey(a)){
charMap.put(a, charMap.get(a)+1);
if(charMap.get(a)==0){
charMap.remove(a);
}
}else{
charMap.put(a, 1);
}
char b = B.charAt(i);
if(charMap.containsKey(b)){
charMap.put(b, charMap.get(b)-1);
if(charMap.get(b)==0){
charMap.remove(b);
}
}else{
charMap.put(b, -1);
}
}
if(charMap.isEmpty()){
return true;
}
return false;
}
}