美文网首页
数据结构_串

数据结构_串

作者: arkulo | 来源:发表于2015-10-27 17:40 被阅读37次

github地址:
https://github.com/arkulo56/thought/blob/master/software/dataStruct/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84_%E4%B8%B2.md

定义

  • 特殊的线性表,每个元素都是字符
  • 元素可以是零个或多个

常用操作

查找子串、串的相似度、截取、反转、最长公共子串、分词、回文

顺序实现

  • 字符串的操作一般都不改变内存空间(例外:连接两个字符串),因此顺序存储整体效率更高
  • 存储单元大小=串真实长度+1("\0"占一个字节空间)
  • 比较适合的操作:查找、截取

链式存储

  • 类似插入、删除的操作是效率较高的,截取就不好了

经典算法

朴素的模式匹配算法

https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/simpleChuan.pnghttps://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/simpleChuan.png

代码实现:

#include <stdio.h>

int main(int args,char *argv[])
{
    char S[] = "abcde";
    char T[4] = "cde";
    int slen = sizeof(S);
    int tlen = sizeof(T);

    int i =  0;
    int j = 0;
    int from = 0;
    while(i<slen && j<tlen)
    {
        if(S[i]==T[j])
        {

            from = (from==0)?i:from;
            i++;
            j++;
        }else
        {

                i = i-j+1;
                j = 0;
                from = 0;
        }
    }
    if(j==tlen)
    {
        printf("include subString from index %d\n",from);
    }else
    {
        printf("no match!!\n");
    }
    return 0;
}
  • while(i<slen && j<tlen)是降低时间复杂度的关键(相对于双层循环)

KMP算法

KMP算法图解+代码


相关文章

  • 第二章:API 的理解和使用-字符串

    2.2 字符串 字符串类型是Redis最基础的数据结构。首先键都是字符串类型,而且其他几种数据结构都是在字符串类型...

  • Redis数据结构与对象编码 (Object Encoding)

    数据结构实现 相信大家对 redis 的数据结构都比较熟悉: string:字符串(可以表示字符串、整数、位图) ...

  • Redis学习笔记:String内部编码及其应用场景

    一、概述 字符串类型是Redis最基础的数据结构,Redis中的键都是字符串类型,其他几种数据结构都是在字符串基础...

  • Redis设计与实现读书笔记

    数据结构部分 字符串(SDS) 数据结构为如下: 优点: 可以以常数复杂度获取字符串的长度,因为记录了字符串的长度...

  • Redis学习笔记【04】 - 字符串

    一、简介 字符串类型是redis最基础的数据结构。首先键都是字符串类型,而其它几种数据结构类型都是在字符串类型基础...

  • Redis | Redis 字符串相关命令

    Redis 支持多种数据结构,比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 字符串 ...

  • redis字符串详解

    字符串类型是Redis最基础的数据结构。首先键都是字符串类型,而且其他几种数据结构都是在字符串类型基础上构建的,所...

  • Redis----字符串

    字符串类型是Redis最基础的数据结构,其它几种数据结构都是在字符串类型基础上构建的。需要注意的是字符串值最大不能...

  • C#之数据结构(上)

    数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构有: 线性表、栈、队列、串、数组...

  • 深入理解redis之基本数据结构

    本文是对redis系统中用到的基本数据结构的梳理 1.sds 字符串 redis 中字符串数据结构如下 可以看到,...

网友评论

      本文标题:数据结构_串

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