给定N个字符串 再给定M个字符串,问每个字符串在查询字符串中出现的次数:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cstring>
using namespace std;
const int maxn = 100;
int hashTable[26 * 26 * 26 + 10];
char S[maxn][5];
char temp[5];
int hashFunc(char S[], int len) {
int id = 0;
for (int i = 0; i < len; ++i) {
if (S[i] > 'A' && S[i] < 'Z') {
id = id * 26 + (S[i] - 'A');
}
}
return id;
}
int main() {
int N, M, id;
scanf("%d %d", &N, &M);
for (int i = 0; i < N; ++i) {
scanf("%s", S[i]);
id = hashFunc(S[i], 3);
hashTable[id]++;
}
for (int i = 0; i < M; ++i) {
scanf("%s", temp);
id = hashFunc(temp, 3);
printf("输入次数为 :%d 次\n", hashTable[id]);
}
system("pause");
return 0;
}
//测试数据:
/*
SAS PQY QQY BAR SAS BAR SAS
*/
#include<cstdio>
#include<cstdlib>
const int maxn = 100010;
bool hashTable[maxn] = {false};//统计是否出现过
int hashTable01[maxn] = {0};//统计出现的次数
int main() {
int N, M, X;
scanf("%d%d",&N,&M);
for (int i = 0; i < N; ++i) {
scanf("%d", &X);
hashTable[X] = true;//整数X出现过
hashTable01[X]++;//整数X出现的次数
}
for (int i = 0; i < M; ++i) {
scanf("%d", &X);
//输出出现次数
printf("%d", hashTable01[X]);
if (hashTable[X]) {
printf("Yes !\n");
}
else {
printf("NO !\n");
}
}
system("pause");
return 0;
}
P 进制转化为十进制代码
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
//利用hashFunc函数将字符串转化成散列 (52 转10进制)
//与普通的P进制转化为十进制不同,字符串现出来的数字为是最高位
int hashFunc(char S[], int len) {
int id = 0;
for (int i = 0; i < len; ++i) {
if (S[i] <= 'Z' && S[i] >= 'A') {
id = 52 * id + (S[i] - 'A');
}
if (S[i] <= 'z' && S[i] >= 'a') {
id = 52 * id + (S[i] - 'a');
}
}
return id;
}
//将P进制转化为10进制
int baseConverFunc(int P, int num) {
//传入 进制 P 以及 需要转换的数num
int sum = 0, product = 1;
while (num) {
sum += product * (num % 10);
num = num / 10;
product = product * P;
}
return sum;
}
int main() {
int P, num;
scanf("%d%d",&num, &P);
printf("转换完成之后的数据为 :%d\n",baseConverFunc(P, num));
system("pause");
return 0;
}
字符串初步函数
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
//利用hashFunc函数将字符串转化成散列 (52 转10进制)
//与普通的P进制转化为十进制不同,字符串现出来的数字为是最高位
int hashFunc(char S[], int len) {
int id = 0;
for (int i = 0; i < len; ++i) {
if (S[i] <= 'Z' && S[i] >= 'A') {
id = 52 * id + (S[i] - 'A');
}
if (S[i] <= 'z' && S[i] >= 'a') {
id = 52 * id + (S[i] - 'a');
}
}
return id;
}