RFC

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

POJ2159

import java.util.Arrays;
import java.util.Scanner;

public class _2159 {

public static void main(String[] args){
String first,second;
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
int cnt1[] = new int[26];
int cnt2[] = new int[26];
first = sc.nextLine();
second = sc.nextLine();
for(int i = 0; i < first.length(); i++){
cnt1[first.charAt(i) - 'A']++;
cnt2[second.charAt(i) - 'A']++;
}
Arrays.sort(cnt1);
Arrays.sort(cnt2);
int i;
for(i = 0; i < 26; i++){
if(cnt1[i]!=cnt2[i])break;
}
System.out.println(i==26?"YES":"NO");
}
}
}

技巧:

1.只要统计大写字母出现的频度,当得到的其中一个频度数组是另一个的重排即可;

2.使用sort进行排序可以减少时间复杂度;

3.求解字母出现频度的技巧;

4.java中非静态数组初始化为默认值。

posted on 2012-03-06 00:21  hongxuchen  阅读(135)  评论(0编辑  收藏  举报
无觅相关文章插件,快速提升流量