zoukankan      html  css  js  c++  java
  • Sunday查找

    直接看代码吧懒得打字

    int Sunday(char* src,char* arr)
    {
        if(src == NULL || arr == NULL) return -1;
        //申请辅助数组,用空间换时间,省去遍历的过程
        char* ptemp = (char*)malloc(sizeof(char)*256);
        memset(ptemp,-1,sizeof(char)*256);
        int size = strlen(arr);
        int length = strlen(src);
        //子串中的元素从左到右赋值到数组中
        //通过字符可以直接得到它在子串中的位置
        int i;
        for(i=0;i<size;i++)
            ptemp[arr[i]] = i;
    
        int j=0;
        int index = 0;
        int k;
        for(i=0;i<length;)
        {
            //如果子串元素和父串元素相等,两个一起向后走
            if(src[i] == arr[j])
            {
                j++;
                i++;
                if(j == size)
                    break;
            }
            else
            {
                //看子串对应主串的下一个在不在子串里 
                if(i-j+size < length)
                {
                    //i-j-size是从开始加一个子串长度的下标
                    //k是查找的字符在子串中的下标
                    k = ptemp[src[i-j+size]];
                    //重新给i赋值,再开始匹配
                    i = i-j+size-k;
                    //子串也从头开始
                    j = 0;
                }
            }
    
        }
    
        if(j == size)
            return i-size;
        return -1;
    
    }
  • 相关阅读:
    hbase 得到一行的数据详情
    文件上传
    es 启动用户
    es 分片丢失
    es 调整查询窗口
    hbase 字段值开头查询
    maven 项目linux运行可执行jar
    hbase count 扫表查询
    hbase 查询空串空字段
    sql常用手法(二)
  • 原文地址:https://www.cnblogs.com/TheQi/p/9152384.html
Copyright © 2011-2022 走看看