Skip to content

找茬 #13

@lzl124631x

Description

@lzl124631x

92页, 归并排序
出现了连续两行
/* 数组元素的类型/
typedef int elem_t;

merge函数中第一个循环 for(i = 0...) 应该是 for(i = start...)

基数排序, 应该提供给用户统一的接口, 即void Sort(int A[], int len)
96页中的 a[0].link = current = front[j]; 应改为 a[0].link = front[j];
getDigit中的10应该改为R

第四页strstr第一个for循环的继续条件应该是 _p1_advance && *p 否则会访问越界. 此外, 第二个for里的while不必判断_p1因为p1不会越过p1_advance.
我原先的Leet Code代码

class Solution {
public:
    char *strStr(char *haystack, char *needle) {
        while(true){
            char *p = haystack, *q = needle;
            while(*p && *q && *p == *q){
                p++; q++;
            }
            if(!*q){
                return haystack;
            }else if(*p){
                haystack++;
            }else{
                return NULL;
            }
        }
    }
};

看了你的代码后借鉴着写了:

class Solution {
public:
    char *strStr(char *haystack, char *needle) {
        if(!haystack || !needle) return NULL;
        if(!*needle) return haystack;
        char *p = haystack, *pEnd = haystack, *q = needle + 1;
        while(*pEnd && *q){ pEnd++; q++; }
        while(*pEnd){
            p = haystack, q = needle;
            while(*q && *p == *q){ p++; q++; }
            if(!*q) return haystack;
            haystack++;
            pEnd++;
        }
        return NULL;
    }
};

顺便问一下, 有什么快捷方法把我贴上去的代码直接转成"代码样式"嘛? 我是每行行首手动复制了四个空格...有些麻烦

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions