日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

华为OJ 名字美丽度

發(fā)布時(shí)間:2025/5/22 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 华为OJ 名字美丽度 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是一道坑爹的題目,為什么這么說(shuō),且看我慢慢分析……
題目例如以下:
給出一個(gè)名字,該名字有26個(gè)字符串組成,定義這個(gè)字符串的“美麗度”是其全部字母“美麗度”的總和。


每一個(gè)字母都有一個(gè)“美麗度”。范圍在1到26之間。沒(méi)有不論什么兩個(gè)字母擁有同樣的“美麗度”。字母忽略大寫(xiě)和小寫(xiě)。
給出多個(gè)名字。計(jì)算每一個(gè)名字最大可能的“美麗度”。


輸入:
整數(shù)N。后面N個(gè)名字,如
2 zhangsan lisi
輸出:
每一個(gè)名字相應(yīng)的最大美麗程度
如:192 101

題目分析:
這道題目乍一看,挺厲害的。可是一分析就發(fā)現(xiàn)這事實(shí)上就是求一個(gè)字符串中每一個(gè)字符的出現(xiàn)次數(shù),為了獲得最大的美麗度那么必須讓出現(xiàn)次數(shù)最多的字符美麗度為26,依次遞減往下。
有了解題思路。直接上代碼,代碼例如以下,Java實(shí)現(xiàn)

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner;public class Main {public static void main(String[] args){Scanner scanner=new Scanner(System.in);int N=scanner.nextInt();String[] names=new String[N];Main main=new Main();for (int i = 0; i < N; i++) {names[i]=scanner.next();System.out.println(main.beautyfulNames(names[i]));//為何是System.out.println()。后面解釋}scanner.close();}public int beautyfulNames(String name){char[] c=name.toCharArray();Map<Character, Integer> map=new HashMap<Character,Integer>();for (int i = 0; i < c.length; i++) {if (map.containsKey(c[i])) {map.put(c[i], map.get(c[i])+1);}else {map.put(c[i], 1);} }List<Map.Entry<Character, Integer>> list=new ArrayList<Map.Entry<Character,Integer>>(map.entrySet());//Collections.sort重載方法來(lái)實(shí)現(xiàn)排序Collections.sort(list,new Comparator<Map.Entry<Character, Integer>>() {public int compare(Map.Entry<Character, Integer> o1,Map.Entry<Character, Integer> o2){return o2.getValue().compareTo(o1.getValue());//降序排列 // return o1.getValue().compareTo(o2.getValue());//升序排列}});int result=0;for (int i = 0; i < list.size(); i++) {result=result+list.get(i).getValue()*(26-i);}return result;}}

看到我的這段代碼。你肯定會(huì)說(shuō)這么輸出是不正確的,由于題目給的輸出實(shí)例中明顯是都在一行……可是我告訴你這么是對(duì)的,這就是我說(shuō)這道題坑爹的原因所在。我第一提交的時(shí)候用的是System.out.print()。然后直接就提示說(shuō)“格式錯(cuò)誤”,不死心,我又提交第二次。依然“格式錯(cuò)誤”,后來(lái)我抱著試試看的態(tài)度使用System.out.println()又一次提交,居然就對(duì)了。!

!!

——這么大一個(gè)公司,做事情到了如此不認(rèn)真的地步,我也真是醉了……

標(biāo)記為原創(chuàng)的博文均為本人辛苦碼字所得,謝絕抄襲。轉(zhuǎn)載請(qǐng)注明出處,新浪微博私信艾特:物聯(lián)網(wǎng)project_Niegang。

轉(zhuǎn)載于:https://www.cnblogs.com/jhcelue/p/7225589.html

總結(jié)

以上是生活随笔為你收集整理的华为OJ 名字美丽度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。