package BATZTSuanfa.String;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/*
给定两个字符串str1和str2 ,如果str 1和str2中出现的字符种类样且每种字符出现的次数也一样
,那么str1与str2互为变形词,请实现函数判断两个字符串是否互为变形词。举例:
str1=" 123”,str2=" 231”。返回true。str1=" 123" ,str2=" 2331"。返回false.
*/
public class AL2_BianXingCi {
public boolean jugeChangeWord(String str1, String str2) {
char[] c1=str1.toCharArray();
char[] c2=str2.toCharArray();
//先判断两个字符的长度是否相等不相等肯定不是
if (c1.length!=c2.length){
return false;
}
HashMap<Character,Integer> a=new HashMap();
//把单个字符串放到map中
for (int i = 0; i <c1.length ; i++) {
if (a.containsKey(c1[i])){
a.put(c1[i],a.get(c1[i])+1);
}else {
a.put(c1[i],1);
}
}
//在把c2中的字符在map中减出去,如果有没有的直接返回false
for (int i = 0; i <c2.length ; i++) {
if (a.containsKey(c2[i])){
a.put(c2[i],a.get(c2[i])-1);
}else {
return false;
}
}
//用迭代器查看是否有剩的字符
Iterator iter = a.entrySet().iterator();
while (iter.hasNext()){
Map.Entry entry = (Map.Entry) iter.next();
Object val = entry.getValue();
if (Integer.parseInt(val.toString())>0||Integer.parseInt(val.toString())<0){
return false;
}
}
return true;
}
public static void main(String[] args) {
AL2_BianXingCi a=new AL2_BianXingCi();
System.out.println(a.jugeChangeWord("1223","2331"));
}
}