周孝未


私信TA

用户名:dotcpp0664574

访问量:1449

签 名:

等  级
排  名 1992
经  验 2517
参赛次数 1
文章发表 14
年  龄 0
在职情况 学生
学  校 淄博职业学院
专  业

  自我简介:


解题思路:

1.读取输入的单词。
2.创建一个长度为26的数组counts用于统计每个字母的出现次数。初始将所有字母的计数设置为0。
3.遍历单词中的每个字符,将每个字母的出现次数加1到counts数组的对应位置上。
4.找出counts数组中的最大值maxCount和最小值minCount。
5.计算maxCount和minCount的差值diff。
6.创建一个方法isPrime,用于判断一个数是否是质数。在实现isPrime方法时,可以使用简单的迭代来检查是否有除了1和它本身以外的其他因子,如果有则不是质数,否则是质数。
7.判断diff是否为质数,如果是,则输出"Lucky Word"和diff的值;否则输出"No Answer"和0。

注意事项:
当一个数不是质数时,必定存在两个约数,一个大于等于sqrt(n),另一个小于sqrt(n)。

利用这种特性,可以对方法1进行改进,只判断数n能否被小于sqrt(n)的数整除。

参考代码:

import java.util.Scanner;


public class LuckyWord {
   public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);//键盘录入
       String word = sc.nextLine();//输入的单词

       //建立数组,统计字母出现的次数
       int[] counts = new int[26];
       //word.toCharArray() 将字符串转换为字符数组
       for (char c : word.toCharArray()) {
           counts[c - 'a']++;
       }
       int maxCount = 0;//用于统计counts数组中的最大值maxCount
       //用于初始化 minCount 变量,
       // 将其设置为整数的最大值 Integer.MAX_VALUE
       //目的是为了确保在遍历 counts 数组时可以正确地找到出现次数最少的字母
       int minCount = Integer.MAX_VALUE;
       for (int count : counts) {
           if (count > maxCount) {
               maxCount = count;
           }
           if (count < minCount && count > 0) {
               minCount = count;
           }
       }
       //计算最大与最小之间的差值
       int diff = maxCount - minCount;

       //引用自定义的方法,用于判别是否为质数
       if (isPrime(diff)) {
           System.out.println("Lucky Word");
           System.out.println(diff);
       } else {
           System.out.println("No Answer");
           System.out.println(0);
       }

   //释放资源
       sc.close();
}

   //判别质数的方法
   private static boolean isPrime(int n) {
       if (n <= 1) {
           return false;
       }
       for (int i = 2; i <= Math.sqrt(n); i++) {
           if (n % i == 0) {
               return false;
           }
       }
       return true;
   }
}


 

0.0分

0 人评分

  评论区

  • «
  • »