字符统计
2023-09-27 14:26:30 时间
题目描述
如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
实现以下接口:
输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
清空目前的统计结果,重新统计
调用者会保证:
输入的字符串以‘\0’结尾。
输入描述:
输入一串字符。
输出描述:
对字符中的 各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
输入例子:
aadddccddc
输出例子:
dca
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
bool cmp(const pair<char ,int> &a,const pair<char,int> &b)//题目要求出现次数一样则按ASCII由小到大输出,否则按照次数由大到小输出
{
if(a.second==b.second)return a.first<b.first;
else return a.second>b.second;
}
bool ish(char s)
{//统计符合要求的字符
if((s>='a'&&s<='z')||(s>='A'&&s<='Z')||(s>='0'&&s<='9')||(s==' '))return true;
else return false;
}
int main()
{
string s;
while(getline(cin,s))
{
int a[128]={0};//用于统计字符的出现次数
vector<pair<char ,int>> v;
for(int i=0;i<s.size();i++)
{
if(ish(s[i]))
{
a[s[i]]++;
}
}
for(int i=0;i<128;i++)//将出现次数不为0的字符加入vector中
{
if(a[i]!=0)
{
v.push_back(make_pair(i,a[i]));
}
}
sort(v.begin(),v.end(),cmp);//按要求排序
for(int i=0;i<v.size();i++)
cout<<v[i].first;//按照次序输出
cout<<endl;
}
return 0;
}
下面是一种想法不错的实现(别人的)
#include <iostream>
#include <string>
#include<algorithm>
using namespace std;
bool ish(char s)
{
if((s>='a'&&s<='z')||(s>='A'&&s<='Z')||(s>='0'&&s<='9')||(s==' '))return true;
else return false;
}
int main()
{
string st;
while (getline(cin, st))
{
int a[128] = {0}, i, j, b[128] = {0};
for (i = 0; i < st.length(); ++i)
{
if(ish(st[i]))
{a[st[i]]++;
b[st[i]]++;}
}
sort(a, a + 128);//将统计次数由小到大排序
sort(st.begin(), st.end());//将字符由小到大排序
for (i = 127; i >= 0; --i)//由出现次数多的先输出
{
if (a[i] == 0)break;
for (j = 0; j < st.length(); ++j)//次数相等时,ASCII小的优先输出
{
if (b[st[j]] == a[i])
{
cout << st[j];
b[st[j]] = 0;
break;
}
}
}
cout << endl;
}
return 0;
}
相关文章
- Python基础之:struct和格式化字符
- 【BZOJ4566】找相同字符(后缀数组)
- Word控件Spire.Doc 【段落处理】教程(十九):在 C#/VB.NET 中将 ASCII 字符设置为 Word 中的项目符号
- 【算法】【字符串模块】字符串的统计字符串和通过统计字符串查找字符
- java基础—统计一个字符串中各个字符出现的次数
- 统计一行字符中有多少个单词
- 华为python机试题目:坐标移动、字符个数统计、字符串排序、字符串加密、字符串分割、字符串反转、质数因子
- Python统计txt文档每行以指定字符结尾的个数
- 操作XML 报错:根级别上的数据无效 和 给定编码中的字符无效 解决办法
- C++中常见的字符判断与处理方法
- 统计一个文件中出现字符'a'的次数
- 《SQL与关系数据库理论——如何编写健壮的SQL代码》一2.8 SQL中的字符序
- python统计字符串字符出现次数
- sql 替换字段中的部分字符,替换指定字符
- 为一个字符正常显示我遍历了macOS系统的所有字体ttf(含代码)
- C++用iconv进行页面字符转换
- windows自带记事本导致文本文件(UTF-8编码)开头三个字符乱码问题
- wc 统计文件字节数、字符数、单词数
- 统计字符串中每个字符出现的次数(Python)
- 习题5.10 编程统计用户从键盘输入的字符串中所包含的字母、数字和其它字符的个数。
- Problem G: 沉迷字符的WJJ (LCS)
- Java 从键盘输入一个字符串,统计某个字符的个数