提示
LintCode中的相关算法题实现代码,可以在我的GitHub中下载。
题目需求
给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。
置换的意思是,通过改变顺序可以使得两个字符串相等。
样例
"abc"
为 "cba"
的置换。
"aabc"
不是 "abcc"
的置换。
解题思路
可以使用HashMap求解,先将字符串A的字符hash到里面,然后在将字符串Bhash,看看是否有元素。
实现代码
public class Solution {
/**
* @param A: a string
* @param B: a string
* @return: a boolean
*/
public boolean Permutation(String A, String B) {
// write your code here
if(A==null) return false;
else if(A.length()==0&&B.length()!=0) return false;
Map<Character,Integer> maps=new HashMap<Character,Integer>();
for(int i=0;i<A.length();i++)
{
if(maps.get(A.charAt(i))!=null)
{
maps.put(A.charAt(i),maps.get(A.charAt(i))+1);
}
else
maps.put(A.charAt(i),1);
}
for(int i=0;i<B.length();i++)
{
if(maps.get(B.charAt(i))!=null)
{
maps.put(B.charAt(i),maps.get(B.charAt(i))+1);
}
else
maps.put(B.charAt(i),1);
}
for(Integer i:maps.values())
{
if(i%2!=0) return false;
}
return true;
}
}