首页 > 其他分享 >HJ45 名字的漂亮度

HJ45 名字的漂亮度

时间:2023-07-21 16:13:26浏览次数:40  
标签:String beauty int 漂亮 名字 names HJ45 public

1. 题目

读题

HJ45 名字的漂亮度

 

考查点

 

2. 解法

思路

 

代码逻辑

 

具体实现

首先,我们需要定义一个方法来计算一个字符串的漂亮度。漂亮度是指字符串中每个字母出现的次数乘以它在字母表中的位置,然后求和。例如,字符串"ABC"的漂亮度是11 + 22 + 3*3 = 14。

我们可以用一个数组来存储每个字母出现的次数,然后用一个循环来遍历字符串,更新数组。然后,我们再用一个循环来计算漂亮度,根据字母的位置加上相应的值。

代码如下:

//定义一个方法,参数是字符串,返回值是漂亮度
public static int beauty(String s) {
  //定义一个长度为26的数组,存储每个字母出现的次数
  int[] count = new int[26];
  //将字符串转换为大写,方便处理
  s = s.toUpperCase();
  //遍历字符串,更新数组
  for (int i = 0; i < s.length(); i++) {
    //获取当前字符
    char c = s.charAt(i);
    //如果是字母,就在对应的位置加一
    if (c >= 'A' && c <= 'Z') {
      count[c - 'A']++;
    }
  }
  //定义一个变量,存储漂亮度
  int beauty = 0;
  //遍历数组,计算漂亮度
  for (int i = 0; i < count.length; i++) {
    //如果当前字母出现了,就加上它的位置乘以次数
    if (count[i] > 0) {
      beauty += (i + 1) * count[i];
    }
  }
  //返回漂亮度
  return beauty;
}

然后,我们可以调用这个方法,传入"HJ45"作为参数,打印出结果:

public static void main(String[] args) {
  //调用方法,传入"HJ45"
  int result = beauty("HJ45");
  //打印结果
  System.out.println(result);
}

运行这段代码,输出是:

98

 

自行实现

public class HJ045 {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String[] names = new String[n];
for (int i = 0; i < n; i++) {
names[i] = sc.nextLine();
}
calGrade(names);
}

public static int[] calGrade(String[] names) {
int n = names.length;
int[] grades = new int[n];
for (int i = 0; i < n; i++) {
grades[i] = calGrade(names[i]);
System.out.println(grades[i]);
}
return grades;

}

public static int calGrade(String name) {
name = name.toLowerCase();
int[] fre = new int[26];
for (char c : name.toCharArray()) {
fre[c - 'a'] += 1;
}

Arrays.sort(fre);
int grade = 0;
int initial = 26;
for (int i = 25; i >=0; i--) {
if (fre[i] == 0) {
break;
}
grade += initial * fre[i];
initial--;
}
return grade;
}
}

3. 总结

标签:String,beauty,int,漂亮,名字,names,HJ45,public
From: https://www.cnblogs.com/shoshana-kong/p/17548667.html

相关文章

  • .Net 根据类型全名字符串获取类型信息
    asp.net项目开发过程中用到了多个程序集(dll),如何根据类型全名(fullname)获取类型信息?如果项目(csproj)中设置了引用对应的dll或nupkg包,但是代码中没有任务地方引用改该程序集的类,则实际上运行时,该程序集不会被加载到进程中.假设有一个ThirdModels.dll,在该dll中定义命名......
  • Python获取文件夹下文件夹的名字,并存excel为一列(方法一)
    大家好,我是皮皮。一、前言这个事情还得从前几天在Python最强王者群【东哥】问了一个Python自动化办公处理的问题,需求倒是不难,一起来看看吧。二、实现过程这里【wangning】又给了一个答案,他自己之前整理的文章,不过需要自己稍微修改下才行。后来【魏哥】看到了,并且给出了如下......
  • python怎么获取object名字
    使用Python获取对象名称的方法在Python中,我们可以通过多种方式获取对象的名称。无论是函数、类、模块还是变量,都可以使用这些方法来获取其名称。使用__name__属性在Python中,每个对象都有一个特殊的属性__name__,可以用来获取对象的名称。下面是一些示例代码:获取函数名称def......
  • 1667-修复表中的名字
    修复表中的名字原文地址:1667.修复表中的名字-力扣(LeetCode)题目如下所示个人题解这题说难也难,说简单也简单。难就难在目前作为初学者还未接触到更多的MySQL相关函数。个人思考过程如下所示--1.建表CREATETABLE1667_Users( user_idINT, nameVARCHAR(20),......
  • python遍历tk菜单项的名字
    直接上代码:fromtkinterimport*defprint_menu_items(menu):num_items=menu.index('end')#最后一个菜单项的索引forindexinrange(num_items+1):#遍历所有的菜单项item_type=menu.type(index)#获取菜单项的类型#菜单项的......
  • Java获取名字首字母拼音及用户按名字拼音分组工具
    一、需求分析最近在做一个类似于微信用户通讯录的功能,所以考虑通过查找的好友列表,在后台遍历按照26个字母分组,前台获取到Json循环26个字母直接解析对应的字符下的名称为一组分隔,没有则不显示,工具如下↓二、引入Pom<dependency> <groupId>com.belerweb</groupId> <artif......
  • vue--day11--计算属性实现名字案例简写
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>计算属性实现名字案例简写</title><scr......
  • vue--day11--计算属性实现名字案例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>计算属性实现名字案例</title><scrip......
  • vue-day11--插值语法实现名字案例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>插值语法实现名字案例</title><scrip......
  • vue-day11--methods实现名字案例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>methods实现名字案例</title><sc......