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


词语变形问题

算法--词语变形问题
算法--词语变形问题
 
词语变形练习
 

第3节 词语变形练习题

 

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

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

测试样例:
"abc",3,"bca",3
返回:true
Java (javac 1.7)
 
 
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
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-08
  • 2021-07-25
  • 2021-04-24
  • 2021-06-25
  • 2021-09-29
猜你喜欢
  • 2022-01-09
  • 2021-10-13
  • 2021-09-02
  • 2021-07-03
  • 2021-11-19
  • 2022-01-12
相关资源
相似解决方案