算法训练 Anagrams问题

举报
陈言必行 发表于 2021/08/13 23:21:14 2021/08/13
【摘要】                  问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写...
                 问题描述
Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。
  输入格式:输入有两行,分别为两个单词。
  输出格式:输出只有一个字母Y或N,分别表示Yes和No。
  输入输出样例
样例输入
Unclear
Nuclear
样例输出
Y
 
个人思路:首先把所有输入字母都转换成大写或者小写,然后用简单的查找方法,两个字符串相互查找,找到计数器加一,若最后计数器除以2,等于输入字符长度,那么程序就成功了。
 
方法一:

      
  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String[] args) {
  4. // TODO Auto-generated method stub
  5. Scanner sc=new Scanner(System.in);
  6. String s1=sc.next();
  7. String s2=sc.next();
  8. s1=s1.toLowerCase().trim();
  9. s2=s2.toLowerCase().trim();
  10. char[] a=(char[]) s1.toCharArray();
  11. char[] b=(char[]) s2.toCharArray();
  12. int n=0;
  13. for(int i=0;i<a.length;i++){
  14. if(f(b,a[i])==1){
  15. n++;
  16. }}
  17. for(int i=0;i<a.length;i++){
  18. if(f(a,b[i])==1){
  19. n++;
  20. }
  21. }
  22. if(n/2==a.length){
  23. System.out.println("Y");
  24. }else{
  25. System.out.println("N");
  26. }
  27. }
  28. private static int f(char[] a, char x) {
  29. // TODO Auto-generated method stub
  30. char i,f=0;
  31. for(i=0;i<a.length;i++){
  32. if(x==a[i]){
  33. f=1;
  34. break;
  35. }
  36. }
  37. return f;
  38. }
  39. }

 
  • 方法二:
  • 
           
    1. import java.math.BigDecimal;
    2. import java.util.Arrays;
    3. import java.util.Scanner;
    4. public class Main {
    5. public static void main(String[] args) {
    6. // TODO Auto-generated method stub
    7. Scanner in = new Scanner(System.in);
    8. String s1=in.next();
    9. String s2=in.next();
    10. char[] a=s1.toCharArray();
    11. char[] b=s2.toCharArray();
    12. for(int i=0;i
    13. if(a[i]>='a'&&a[i]<='z')
    14. a[i]-=32;
    15. }
    16. for(int i=0;i
    17. if(b[i]>='a'&&b[i]<='z')
    18. b[i]-=32;
    19. }
    20. int sum1=0,sum2=0;
    21. for(int i=0;i
    22. sum1+=a[i];
    23. sum2+=b[i];
    24. }
    25. if(sum1==sum2)
    26. System.out.println("Y");
    27. else
    28. System.out.println("N");
    29. }
    30. }
 

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/76091285

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。