算法训练 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
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 算法训练 Anagrams问题
- 蓝桥杯-算法训练-Anagrams问题
- SQL Server事务、隔离级别详解(二十九)
- uva 10827Maximum sum on a torus
- NOIP 2013 提高组 复赛 day2 block 积木大赛
- 【2月1日】并发(六):run()和start()
- SQLite事务与自增深度分析
- 算法训练 Anagrams问题
- HDU - 2604 Queuing解题报告
- 双系统下卸载Ubuntu方法
- 1028. 人口普查(20)
- Installing with get-pip.py
- mysql中int、bigint、smallint 和 tinyint的区别详细介绍
- 拟阵理论和贪心算法浅析
- Leetcode: Reverse word in string
- SQL中的关联更新和关联删除