给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。
置换的意思是,通过改变顺序可以使得两个字符串相等。
样例
"abc" 为 "cba" 的置换。
置换的意思是,通过改变顺序可以使得两个字符串相等。
样例
"abc" 为 "cba" 的置换。
"aabc" 不是 "abcc" 的置换。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
* 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。
置换的意思是,通过改变顺序可以使得两个字符串相等。
样例
"abc" 为 "cba" 的置换。
"aabc" 不是 "abcc" 的置换。
*
* @author Dell
*
*/
public class Test211 {
public static boolean stringPermutation(String A, String B)
{
if(A.equals("")&&B.equals(""))
return true;
if(A.length()!=B.length())
return false;
Map<Character,Integer> map=new HashMap<>();
for(int i=0;i<B.length();i++)
{
if(!map.containsKey(B.charAt(i)))
{
map.put(B.charAt(i), 1);
}
else
{
map.put(B.charAt(i),map.get(B.charAt(i))+1);
}
}
for(int i=0;i<A.length();i++)
{
if(map.containsKey(A.charAt(i)))
{
if(map.get(A.charAt(i))==1)
{
map.remove(A.charAt(i));
}
else
{
map.put(A.charAt(i), map.get(A.charAt(i))-1);
}
}
}
return map.size()==0;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String A=sc.next();
String B=sc.next();
System.out.println(stringPermutation(A,B));
}
}