华为训练题目:初级——图片整理(排序,字典)


Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。

知识点 字符串
运行时间限制 0M
内存限制 0
输入
Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。

输出
Lily的所有图片按照从小到大的顺序输出

样例输入 Ihave1nose2hands10fingers
样例输出 0112Iaadeeefghhinnnorsssv

思路1:

采用字典法来做,因为只有‘0’—‘9’,‘A’—‘Z’,‘a’—‘z’,所以可以将这作为键,而他们出现的次数作为值,初始化都值为0

再用迭代器一次遍历一遍即可;

思路2:

根据这些符号,把这个字符串遍历多遍,每次将其压入到一个string中,最后输出那个string

下面是AC的代码:

 1 #include<iostream>
 2 #include<string>
 3 #include<map>
 4 using namespace std;
 5
 6 map<char,int> ma;
 7
 8 void sorted(string& str)
 9 {
10     for(int i=‘0‘;i<‘9‘;i++)
11         ma[(map<char,int>::key_type)i]=0;
12     for(int i=‘A‘;i<=‘Z‘;i++)
13         ma[(map<char,int>::key_type)i]=0;
14     for(int i=‘a‘;i<‘z‘;i++)
15         ma[(map<char,int>::key_type)i]=0;
16     int len=str.size();
17     for(int i=0;i<len;i++)
18         ma[str[i]]++;
19     for(map<char,int>::iterator i=ma.begin();i!=ma.end();i++)
20     {
21         map<char,int>::key_type a=i->first;
22         map<char,int>::mapped_type b=i->second;
23         for(map<char,int>::mapped_type j=1;j<=b;j++)
24             cout<<a;
25     }
26     cout<<endl;
27 }
28
29 void sorted2(string& str)
30 {
31     int len=str.size();
32     string s;
33     for(int i=‘0‘;i<=‘9‘;i++)
34         for(int j=0;j<len;j++)
35             if(str[j]==i)
36                 s.push_back(str[j]);
37     for(int i=‘A‘;i<=‘Z‘;i++)
38         for(int j=0;j<len;j++)
39             if(str[j]==i)
40                 s.push_back(str[j]);
41     for(int i=‘a‘;i<=‘z‘;i++)
42         for(int j=0;j<len;j++)
43             if(str[j]==i)
44                 s.push_back(str[j]);
45     cout<<s<<endl;
46 }
47 int main()
48 {
49     string str;
50     getline(cin,str);
51     sorted(str);
52
53     system("pause");
54 }
时间: 2024-10-14 05:36:14

华为训练题目:初级——图片整理(排序,字典)的相关文章

华为初级——图片整理

源程序: #include<iostream> #include<string> using namespace std; //const int max=1024; int main() { char s[1024]; char temp; gets(s); int len; len=strlen(s); for(int i=0;i<len;i++) { for(int j=i+1;j<len;j++) { if(s[i]>s[j]) { temp=s[i];s

华为训练题目:初级——字符串最后一个单词的长度

初级 字符串最后一个单词的长度 描述 计算字符串最后一个单词的长度,单词以空格隔开. 知识点 字符串,循环 运行时间限制 0M 内存限制 0 输入 一行字符串,长度小于128. 输出 整数N,最后一个单词的长度. 样例输入 hello world 样例输出 5 思路:这道题字符串可能中间有空格,可能后面最后有空格. 先将下标从后往前指到最后一个不是空字符的方,再开始计数 1 #include<iostream> 2 #include<string> 3 using namespac

华为训练题目:初级——名字漂亮度(未通过,显示格式错误)

给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和.每个字母都有一个“漂亮度”,范围在1到26之间.没有任何两个字母拥有相同的“漂亮度”.字母忽略大小写.给出多个名字,计算每个名字最大可能的“漂亮度”. http://career-oj.huawei.com/exam/ShowProblemInfo?method=campusProblemInfo&id=228 这道题目一直显示格式错误: 下面是提交的代码: 1 #include<iostream

华为训练题目:初级——(练习用)挑7

初级 3162人提交 1468人正确 分值:100分 00 小时 00 分钟 05 秒 描述 输出7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37...70,71,72,73...)的个数 知识点 循环 运行时间限制 0M 内存限制 0 输入 一个正整数N.(N不大于30000) 输出 不大于N的与7有关的数字个数,例如输入20,与7有关的数字包括7,14,17. 样例输入 20 样例输出 3 这题用的方法比较一般,就是循环遍历,可能还有简单的方法,暂时没想到 下面是AC代码

华为训练题目:初级——合唱队

述 计算最少出列多少位同学,使得剩下的同学排成合唱队形 说明: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,   则他们的身高满足存在i(1<=i<=K)使得Ti<T2<......<Ti-1<Ti>Ti+1>......>TK.      你的任务是,已知所有N位同学的身高,计算最少需要几位同学出

华为训练题:中级——字符串排序(查找)

编写一个程序,将输入字符串中的字符按如下规则排序. 规则1:英文字母从A到Z排列,不区分大小写. 如,输入:Type 输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列. 如,输入:BabA 输出:aABb 规则3:非英文字母的其它字符保持原来的位置. 如,输入:By?e 输出:Be?y 样例: 输入: A Famous Saying: Much Ado About Nothing(2012/8). 输出: A aaAAbc dFgghh: iimM nNn oooos 

华为OJ—火车进站(栈,字典排序)

给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号.要求以字典序排序输出火车出站的序列号.其实也就是输出所有可能的出栈序列. 样例输入: 3 1 2 3 样例输出: 1 2 31 3 22 1 32 3 13 2 1 解答: 其实核心就是一个栈,对于第K个数,在第K个数进栈之前,前面的 K-1 个数要么全部出去了,要么都在栈里面,要么部分在栈里面部分出去了.那么可以假想,在第K个数入栈之前,依次从栈里面出去 0个.1个.2个--栈.si

华为OJ(二)——图片整理

/** * 功能:图片整理 * 题目描述:Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好. * 输入: Lily使用的图片包括"A"到"Z"."a"到"z"."0"到"9".输入字母或数字个数不超过1024. * 输出: Lily的所有图片按照从小到大的顺序输出 * 样例输入: Ihave1nose2hands10fi

华为OJ题目

题目描述: 新入职华为的小伙伴们都有在oj上面刷题的任务,共需要刷100道初级题,45道中级题,5道高级题,其中,做出来的高级题如果超标可以当初级或者中级题,做出来的中级题如果超标可以当初级题.每天,出题的大哥会给大家出Xi道题,这Xi道题属于同一个难度级别,小伙伴们要么用一天时间把这些题全做出来,要么就不做.现在,给你每天出题大哥出的题数以及难度,请问,小伙伴们最少要挑选其中几天去做题,才能把这150道题的任务完成呢? 输入示例: 5 100 70 5 5 55 1 2 2 2 3 输出: 2