其实这个小技巧很多人应该都知道,就是在做字符串处理的时候可以将输入串映射到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