码迷,mamicode.com
首页 > 其他好文 > 详细

ALGO-91---Anagrams问题

时间:2016-02-14 13:00:01      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

过年弄得也没写代码了,最近开始继续奋斗



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


笨方法

一开始没看懂题目,用了笨方法,就是把每个字母出现的次数记录下来,得了80分,错了两组数据,因为不是VIP暂时看不到数据,想了想也不知道错在哪

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

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String str1 = input.next();
        String str2 = input.next();
        str1 = str1.toLowerCase();
        str2 = str2.toLowerCase();
        if (str1.length()!=str2.length()){
            System.out.println("N");
            System.exit(0);
        }
        input(str1,str2);
    }
    /**
    *接收两个串,然后比较
     */
    private static void input(String str1,String str2){
        int[] arr1 = new int[str1.length()];
        int[] arr2 = new int[str2.length()];
        for (int i = 0; i < str1.length(); i++) {
            arr1[i] = judge(str1.charAt(i),str1);
        }
        for (int i = 0; i < str2.length(); i++) {
            arr2[i] = judge(str2.charAt(i),str2);
        }
        for (int i = 1; i < str1.length(); i++) {
            if (arr1[0] !=arr1[i]){
                System.out.println("N");
                return;
            }
        }
        for (int i = 1; i < str2.length(); i++) {
            if (arr2[0] !=arr2[i]){
                System.out.println("N");
                return;
            }
        }
        System.out.println("Y");
    }
    /*
    计算字母在一个字符串中出现的次数
    */
    private static int judge(char a,String str){
        int start = 0,count = 0;
        while ((start = str.indexOf(a, start)) >= 0){
            start++;
            count++;
        }
        return count;
    }
}

简单方法

,先排序,然后直接比较排序后的数组是否相等即可

    private static void judge1(String str1,String str2){
        char[] a = str1.toCharArray();
        char[] b = str2.toCharArray();
        Arrays.sort(a);
        Arrays.sort(b);
        if (Arrays.equals(a,b)){
            System.out.println("Y");
        }else {
            System.out.println("N");
        }
    }

ALGO-91---Anagrams问题

标签:

原文地址:http://blog.csdn.net/u012706811/article/details/50662563

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!