算法--词语变形问题

转载请标明出处http://www.cnblogs.com/haozhengfei/p/67679362ce83ca1bef4ecef5901552dc.html 


词语变形问题

 
词语变形练习
 

第3节 词语变形练习题

 

对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词,请设计一个高效算法,检查两给定串是否互为变形词。

给定两个字符串AB及他们的长度,请返回一个bool值,代表他们是否互为变形词。

测试样例:
"abc",3,"bca",3
返回:true
 
 
1
import java.util.*;
2

3
public class Transform {
4
    public boolean chkTransform(String A, int lena, String B, int lenb) {
5
        if(A == null || B == null || A.length() != B.length()) {
6
            return false;
7
        }
8
        char[] ch1 = A.toCharArray();
9
        char[] ch2 = B.toCharArray();
10
        int[] map = new int[65535];//java中字符的范围是0~65535
11
        for(int i =0; i<ch1.length; i++){
12
              map[ch1[i]]++;//比如a对应的ASCII码是97,那么map[97]++          
13
        }
14
        for(int i=0; i<ch2.length; i++) {
15
            if(map[ch2[i]]-- == 0){
16
                return false;//如果字符B中的字符在map数组中对应为0,返回false
17
            }
18
        }
19
        return true;
20
    }
21
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
原文地址:https://www.cnblogs.com/haozhengfei/p/67679362ce83ca1bef4ecef5901552dc.html