算法训练 Anagrams问题

来源:互联网 发布:手机淘宝类目怎么修改 编辑:程序博客网 时间:2024/06/05 18:42

问题描述
  Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。
  输入格式:输入有两行,分别为两个单词。
  输出格式:输出只有一个字母Y或N,分别表示Yes和No。
  输入输出样例
样例输入
Unclear
Nuclear
样例输出
Y

import java.util.Arrays;import java.util.HashMap;import java.util.Scanner;class Anagrams{    private String Word;    private HashMap<String, Integer> anagrams;    public Anagrams(String word) {        super();        Word = word.toUpperCase();        anagrams = new HashMap<String, Integer>();    }    public String Anagrams_str(){        char[] word = new char[this.Word.length()];        int cnt = 0;        for ( int i = 0 ; i < this.Word.length() ; i++){            String str = this.Word.substring(i, i+1);            if (anagrams.containsKey(str)){                this.anagrams.replace(str, this.anagrams.get(str) ,this.anagrams.get(str)+1);            }else{                this.anagrams.put(str, 1);                word[cnt++] = this.Word.charAt(i);            }        }        Arrays.sort(word);        return new String(word);    }    public boolean Compare(Anagrams Other){        boolean flag = true;        String str1 = this.Anagrams_str();        String str2 = Other.Anagrams_str();        if (str1.equals(str2)){            for ( int i = 0 ; i < str1.length() ; i++){                if (this.anagrams.get(str1.charAt(i)) != Other.anagrams.get(str2.charAt(i))){                    flag = false;                    break;                }            }        }else{            flag = false;        }        return flag;    }}public class Main {    public static void main(String[] args) {        // TODO Auto-generated method stub        Scanner in = new Scanner(System.in);        String str1 = in.next();        String str2 = in.next();        Anagrams anagrams1 = new Anagrams(str1);        Anagrams anagrams2 = new Anagrams(str2);        if ( anagrams1.Compare(anagrams2)){            System.out.print("Y");        }else{            System.out.print("N");        }        in.close();    }}

这里写图片描述

1 0
原创粉丝点击