Repeated DNA Sequences[leetcode]
void strCpy(char* s, char* d, int from, int size) {
for (int i = 0; i < size; i++) {
d[i] = s[from+i];
}
}
int getVal(char ch) {
if (ch == 'A') return 0;
if (ch == 'C') return 1;
if (ch == 'G') return 2;
if (ch == 'T') return 3;
}
int hash[1024*1024] = {0};
char** findRepeatedDnaSequences(char* s, int* returnSize) {
char** rst = (char**)malloc(sizeof(char*) * 100);
memset(rst, 0, sizeof(rst));
int len = strlen(s), size = -1;
unsigned int bit = 0, i = 0;
for (; i < 9; i++) {
bit = bit << 2 | getVal(s[i]);
}
for (; i < len; i++) {
bit = bit << 2 & 0xFFFFF | getVal(s[i]);
hash[bit]++;
if (hash[bit] == 1) {
rst[++size] = (char*)malloc(sizeof(char)*10);
memset(rst[size], 0, sizeof(rst[size]));
strCpy(s, rst[size], i-9, 10);
}
}
*returnSize = size+1;
return rst;
}
leetcode运行是runtime error,但在本地测试的时候,返回的结果为空的字符串数组。
不知道是不是内存溢出的问题?请大家帮忙看一下
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论