分享一个做PAT乙级字符串题目的小技巧

其实这个小技巧很多人应该都知道,就是在做字符串处理的时候可以将输入串映射到128*4字节大小的int数组里,然后用输入得到的字符的ascii码值作为索引进行哈希,数组值可以存储当前字符出现的次数,也可以用作别的用途,具体看题目要求。

这个方法非常好用,下面举一个小栗子

1042 字符统计 (20 分)

题目传送门 https://pintia.cn/problem-sets/994805260223102976/problems/994805280817135616

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;

#define MAXSIZE 128

int ascii[MAXSIZE] = {0};

int main(){
    char a;
    a = getchar();
    while(a != '\n'){
        if((a >= 'A' && a<= 'Z' )|| (a >= 'a' && a<= 'z')){
            if(a >= 'A' && a <= 'Z'){
                a += 32;    //变成小写
            }
            ascii[a]++;
        }
        a = getchar();
    }
    int max = 0;
    for(int i=0; i<MAXSIZE; i++){
        if(ascii[max] < ascii[i]){
            max = i;
        }
    }
    printf("%c %d", char(max), ascii[max]);
    return 0;
}

这个方法在PAT乙级里真实屡试不爽,嘿嘿o(* ̄︶ ̄*)o

发布了130 篇原创文章 · 获赞 151 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/haohulala/article/details/89405059