Repeated DNA Sequences[leetcode]

发布于 2022-09-02 09:32:48 字数 1058 浏览 9 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文