• LeetCode28-实现strStr()(水题)


    一开始的想法是

    取needle的第一个字符开始呗,遇到合适的再比第二个。

    如果是找到的话,肯定是一个个比对完了。

    找不到的情况就是,needle字符串比haystack剩下的字符串长了。

    能够跳的情况....算了,还是一步步来,这个不合适就比对下一个。

    比如原串1112,子串112,不好跳。

    要注意一些情况就行了

    这里的begin设置的比较巧妙,减少了很多代码

        public int strStr(String haystack, String needle) {
                   
            //要找的是空,返回0
            if(needle==null)
                return 0;
    
            //元字符是null,肯定是-1找不到
            if(haystack==null)
                return -1;
    
            int len1 = haystack.length();
            int len2 = needle.length();
    
    
            //要找的比原来的长
            if(len1<len2)
                return -1;
    
            if(len1==len2){
                if(haystack.equals(needle))
                    return 0;
                else
                    return -1;
            }
    
            //到了这个len1肯定比len2大了
            if(len2==0)
                return 0;
    
            //到了这里,len1和len2都大于0
    
            int begin = 0;
    
            while(len1-begin>=len2){
    
                //假设存在
                boolean exist = true;
    
                for(int i=begin,j=0;i<len1&&j<len2;i++,j++){
                    if(haystack.charAt(i)!=needle.charAt(j)){
                        exist = false;
                        break;
                    }
                }
    
                //正常跳出的话就是找到了
                if(exist)
                    return begin;
    
                begin++;
    
    
            }
    
            return -1;
    
        
        }

    前面的都是用库函数的....

  • 相关阅读:
    最近工作
    有点感受
    日子有点快
    IDEA配置spring
    IDEA配置hibernate
    mysql插入中文乱码
    深夜配置一把struts2
    IDEA 配置SSH2
    找工作的事情
    YTU 2509: 奇怪的分式
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9332209.html
Copyright © 2020-2023  润新知