计蒜客c语言 蒜头君招聘程序,计蒜客 数据结构 蒜头君筛选用户

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

测试了很多样例都是对的 但一直过不去 求大神( ⊙ o ⊙ )啊!

#include

#include

using namespace std;

class HashTable {

private:

string *elem;

int size;

public:

HashTable() {

size = 300000;

elem = new string[size];

for (int i = 0; i < size; i++) {

elem[i] = "#";

}

}

~HashTable() {

delete[] elem;

}

int hash(const string& index) {

int code = 0;

for (size_t i = 0; i < index.length(); i++) {

code = (code * 256 + index[i] + 128) % size;

}

return code;

}

bool search(string& index, int& pos, int& times) {

pos = hash(index);

times = 0;

while (elem[pos] != "#" && elem[pos] != index) {

times++;

if (times < size) {

pos = (pos + 1) % size;

} else {

return false;

}

}

if (elem[pos] == index) {

return true;

} else {

return false;

}

}

int insert(string& index) {

int pos, times;

if (search(index, pos, times)) {

return 2;

} else if (times < size ) {

elem[pos] = index;

return 1;

} else {

recreate();

return 0;

}

}

void recreate()

{

string *temp_elem;

temp_elem=new string[size];

for(int i=0;i

{

temp_elem[i]=elem[i];

}

int copy_size=size;

size=size*2;

delete []elem;

elem=new string[size];

for(int i=0;i

{

elem[i]="#";

}

for(int i=0;i

{

if(temp_elem[i]!="#")

{

insert(temp_elem[i]);

}

}

delete []temp_elem;

}

};

int main() {

HashTable hashtable;

string a;

int n;

cin >> n;

for (int i = 1; i <= n; i++) {

cin >> a;

for(int i=0;i

{

if(a[i]>='A'&&a[i]<='Z')

{

a[i]=a[i]-'A'+'a';

}

}

int ans = hashtable.insert(a);

if (ans == 0) {

cout << "insert failed!" << endl;

} else if (ans == 1) {

cout << "NO" << endl;

} else if (ans == 2) {

cout << "YES" << endl;

}

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值