杭电oj1860:统计字符(字符串hash / 水题)

统计字符

题目链接
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Problem Description
统计一个给定字符串中指定的字符出现的次数

Input
测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。当读到‘#‘时输入结束,相应的结果不要输出。

Output
对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出:
c0 n0
c1 n1
c2 n2
...
其中ci是第1行中第i个字符,ni是ci出现的次数。

Sample Input
I
THIS IS A TEST
i ng
this is a long test string

Sample Output
I 2
i 3
5
n 2
g 2
注:第2个测试用例中,空格也是被统计的字符之一。

采用了一种比较麻烦的方法:字符串的hash方法

#include<iostream>
using namespace std;

inline int hashFunc(char c)
{
    int hashValue;
    if(c >= 'A' && c <= 'Z')
        hashValue = 257 + c - 'A';
    else if(c >= 'a' && c <= 'z')
        hashValue = 257 + 26 + c - 'a';
    else
        hashValue = 0 + c - ' ';
    return hashValue;
}
int main()
{
    //freopen("in.txt","r", stdin);
    string str1, str2;
    while(getline(cin, str1), str1!="#")
    {
        getline(cin, str2);
        int arr[400] = {0};
        for(int i=0;i<str2.length();i++)
            arr[hashFunc(str2[i])]++;
        for(int i=0;i<str1.length();i++)
            printf("%c %d\n",str1[i], arr[hashFunc(str1[i])]);
    }

    return 0;
}

下边的是一种简单的方法:

#include<iostream>
#include <cstring>
#include<memory.h>

using namespace std;

int main() {
    char a[6], b[81];
    int ans[256]={0};
    while (gets(a) && a[0] != '#') {
        gets(b);
        memset(ans,0,256*sizeof(int));
        //  统计出每个字符的出现次数
        for(int i=0;i<strlen(b);i++){
            ans[b[i]]++;
        }
        // 直接输出结果
        for(int i=0;i<strlen(a);i++){
            printf("%c %d\n", a[i], ans[a[i]]);
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/SYDong/p/12253249.html

时间: 2024-10-11 09:19:08

杭电oj1860:统计字符(字符串hash / 水题)的相关文章

杭电(hdu)2085 核反应堆 水题

核反应堆 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12219    Accepted Submission(s): 5547 Problem Description 某核反应堆有两类事件发生: 高能质点碰击核子时,质点被吸收,放出3个高能质点和1个低能质点: 低能质点碰击核子时,质点被吸收,放出2个高能质点和1个低能质点. 假定

杭电oj1859:最小长方形(水题)

最小长方形 题目链接 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内.长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内. Input 测试输入包含若干测试用例,每个测试用例由一系列坐标组成,每对坐标占一行,其中|x|和|y|小于 23

A + B------HDOJ杭电1228(读取字符串练基础)

Problem Description 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. Input 测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出. Output 对每个测试用例输出1行,即A+B的值. Sample Input one + two = three four + five six = zero seven + eig

字符串解密--水题

传纸条 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 传纸条是一种在课堂上传递信息的老方法,虽然现在手机短信和QQ聊天越来越普及,但是手写的信息会让人感到一种亲切感.对许多学生而言,在学校里传递一些私秘性的信息是一种令人兴奋的打发时光的方式,特别是在一些令人厌烦的课堂上. XX 和 YY 经常在自习课的时候传纸条来传递一些私密性的信息.但是他们的座位相隔比较远,传纸条要通过其他人才能到达对方.在传递过程中,难免会有一些好奇心

『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)

今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧,用心在自己的研究上.晚上级会开完也就八点多了,开始打打题,今天在HDU杭电的ACM集训题看到一个奇葩的题,前来献上. 今日推荐: <全球风暴> 一部宇宙航空和地球气候片的良心佳作,后期特效建模都是特别杠杠的大片,不会让你失望的哟,我已经三刷了哈哈哈.这部片在爱奇艺有上线,有兴趣的朋友可以看看鸭.

2015考研 杭电 计算机学院 复试笔试题第一题 JAVA语言解法

杭电 2015年考研 计算机学院 复试笔试第一题 JAVA解法 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; /* 杭电2015年 计算机学院 复试 笔试题第一题 JAVA解答 * author 刘汪洋 QQ 605283073 * 求出:字符串如:"34223abd#34SB-11--" * 中整数的和 其中-在数字前表示负号,否则为字符 */ pub

题目1021:统计字符(hash简单应用)

问题来源 http://ac.jobdu.com/problem.php?pid=1021 问题描述 每次输入两个字符串,统计第一个字符串中的每个字符在第二个字符串中出现的次数. 问题分析 太明显了,hash数组的简单应用:吧字符数值作为数组下标对每个字符进行计数. 另外,字符串的整行输入,请参考:http://www.cnblogs.com/AlvinZH/p/6798023.html 参考代码 // // Created by AlvinZH on 2017/5/18. // Copyrig

杭电之统计汉字

Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本. Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行.[Hint:]从汉字机内码的特点考虑~ Sample Input 2 WaHaHa! WaHaHa! 今年过节不说话要说只说普通话WaHaHa! WaHaHa! 马上就要期末考试了Are you ready? Sample Output 14 9 理解:因为不知道所要输入

杭电acm 1274展开字符串

原题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1274 展开字符串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3355    Accepted Submission(s): 1619 Problem Description 在纺织CAD系统开发过程中,经常会遇到纱线排列的问题.该问题