美文网首页
教训篇:负数不可以与unsigned比较

教训篇:负数不可以与unsigned比较

作者: iDucky131 | 来源:发表于2020-02-11 23:06 被阅读0次

    负数一定不可以与unsigned类型比较,先前看到过这种说法,没想到今天写代码的时候碰到了,在这里记录一下。

    class Solution {
    public:
        void getNext(string s,int next[]){
            int k,j=0;
            next[0]=-1;
            k=next[j];
            while(j<s.length()-1){
                if(k==-1||s[k]==s[j]){
                    j++;
                    k++;
                    next[j]=k;
                }else{
                    k=next[k];
                }
            }
        }
        int strStr(string haystack, string needle) {
            if(needle.empty())
                return 0;
            int next[needle.length()];
            getNext(needle,next);
            int i=0,j=0;
            while(i<haystack.length()&&j<needle.length()){
                if(j==-1||haystack[i]==needle[j]){
                    i++;
                    j++;
                }else
                    j=next[j];
            }
            if(j==needle.length())
                return i-j;
            else
                return -1;
    
        }
    };
    

    在实现KMP算法时,在while(i<haystack.length()&&j<needle.length())判断句中,因为length()返回值是unsigned,而且j可能为负数,所以出现了负数与unsigned比较的情况导致出错,必须改为:

     int hlength=haystack.length(),nlength=needle.length();
     while(i<hlength&&j<needle.length)
    

    以后一定要长记性!

    相关文章

      网友评论

          本文标题:教训篇:负数不可以与unsigned比较

          本文链接:https://www.haomeiwen.com/subject/gswffhtx.html