动态规划在字符串查找中的应用_第1页
动态规划在字符串查找中的应用_第2页
动态规划在字符串查找中的应用_第3页
动态规划在字符串查找中的应用_第4页
动态规划在字符串查找中的应用_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/1动态规划在字符串查找中的应用第一部分动态规划本质与字符串查找间的内在关系。 2第二部分匹配查找方法概述。 3第三部分朴素字符串匹配算法步骤。 6第四部分实现朴素字符串匹配算法关键步骤。 8第五部分Knuth-Morris-Pratt匹配算法简介。 10第六部分实现KMP算法核心思想。 12第七部分Boyer-Moore匹配算法的实现要点。 14第八部分Boyer-Moore-Horspool算法的匹配思想。 16

第一部分动态规划本质与字符串查找间的内在关系。关键词关键要点【动态规划的本质】:

1.动态规划是一种自底向上的算法设计策略,将问题分解成更小的子问题,通过计算并存储子问题的最优解来逐步求解整个问题。

2.动态规划的核心思想是子问题重叠,即对于同一个子问题,在不同情况下可能被多次求解。为了避免重复计算,动态规划将每个子问题的最优解存储起来,当再次遇到同样的子问题时,直接返回存储的解。

3.动态规划的优点在于其时间复杂度通常低于暴力搜索或递归算法,但其空间复杂度可能较高,因为需要存储所有子问题的最优解。

【字符串查找中的子问题重叠】:

动态规划本质与字符串查找间的内在关系

动态规划是一种将问题分解成若干子问题,分别求解各子问题并保存子问题的最优解,然后从这些子问题的最优解中组合出整个问题的最优解的方法。

字符串查找是一种在给定字符串中搜索指定子字符串的过程。动态规划可以应用于字符串查找,因为字符串查找问题可以分解成一系列重叠子问题。

例如,考虑在字符串S中查找子字符串P的问题。该问题可以分解成以下子问题:

*在S中查找P的前缀P[0]。

*在S中查找P的前缀P[0,1]。

*在S中查找P的前缀P[0,2]。

*...

*在S中查找P的前缀P[0,m-1]。

其中,m是P的长度。

这些子问题是重叠的,因为每个子问题都包含了前一个子问题的解。例如,在S中查找P的前缀P[0,1]就需要先找到P[0]。

因此,我们可以使用动态规划来求解字符串查找问题。具体方法如下:

1.定义一个数组dp[i][j],其中dp[i][j]表示在S的前i个字符中查找P的前j个字符的最短匹配长度。

2.初始化dp数组。dp[0][j]=j+1,其中0<=j<=m-1。dp[i][0]=0,其中1<=i<=n-1。

3.对于i=1到n-1,对于j=1到m-1,计算dp[i][j]。

```

```

*如果S[i]=P[j],则dp[i][j]=dp[i-1][j-1]+1。

4.返回dp[n-1][m-1]。

该算法的时间复杂度为O(nm),其中n是S的长度,m是P的长度。第二部分匹配查找方法概述。关键词关键要点【匹配查找方法概述】:

1.匹配查找方法是字符串查找算法的一种,用于查找一个字符串(模式串)在另一个字符串(主串)中的所有出现位置。

2.匹配查找方法包括暴力匹配、KMP算法、BM算法、RK算法、AC自动机等。

3.暴力匹配是最简单的一种匹配查找方法,它逐个字符比较模式串和主串,时间复杂度为O(mn),其中m是模式串的长度,n是主串的长度。

4.KMP算法是一种改进的暴力匹配算法,它利用模式串的失配函数来减少比较次数,时间复杂度为O(m+n)。

5.BM算法是一种更快的匹配查找算法,它利用模式串的坏字符规则和好后缀规则来减少比较次数,时间复杂度为O(mn)。

6.RK算法是一种基于哈希函数的匹配查找算法,它利用模式串和主串的哈希值来进行比较,时间复杂度为O(m+n)。

7.AC自动机是一种基于状态机的匹配查找算法,它将模式串构建成一个自动机,然后将主串逐个字符输入自动机中进行匹配,时间复杂度为O(m+n)。

暴力匹配

1.暴力匹配是最简单的一种匹配查找方法,它逐个字符比较模式串和主串,时间复杂度为O(mn),其中m是模式串的长度,n是主串的长度。

2.暴力匹配的优点是实现简单,易于理解。

3.暴力匹配的缺点是时间复杂度高,当模式串和主串都很长时,暴力匹配的效率非常低。

KMP算法

1.KMP算法是一种改进的暴力匹配算法,它利用模式串的失配函数来减少比较次数,时间复杂度为O(m+n)。

2.KMP算法的失配函数是一个数组,它记录了模式串中每个字符失配后需要回溯的字符数。

3.KMP算法在进行匹配时,当模式串中的某个字符与主串中的字符不匹配时,它会利用失配函数来回溯到模式串中下一个可能匹配的字符,从而减少比较次数。

4.KMP算法的优点是时间复杂度较低,比暴力匹配算法快很多。

5.KMP算法的缺点是实现相对复杂,需要预处理模式串来计算失配函数。#匹配查找方法概述

在本文中,我们将介绍字符串查找中的匹配查找方法,包括朴素字符串匹配算法、KMP字符串匹配算法、Boyer-Moore字符串匹配算法、Rabin-Karp字符串匹配算法以及Trie树字符串查找算法。

朴素字符串匹配算法

朴素字符串匹配算法是一种简单但效率较低的字符串查找算法。该算法从模式串的第一个字符开始,逐个字符地与目标串进行比较,如果遇到模式串中的某个字符与目标串中的某个字符匹配,则继续比较后续字符,直到匹配失败或匹配成功。朴素字符串匹配算法的时间复杂度为O(m*n),其中m是模式串的长度,n是目标串的长度。

KMP字符串匹配算法

KMP字符串匹配算法是一种改进的字符串查找算法,它使用了部分匹配表(也称为next表)来提高匹配效率。部分匹配表是一个数组,其中每个元素的值表示模式串中某个字符的后缀与该字符本身的最长公共前缀的长度。使用部分匹配表,KMP算法可以跳过一些不必要的比较,从而提高匹配速度。KMP字符串匹配算法的时间复杂度为O(m+n),其中m是模式串的长度,n是目标串的长度。

Boyer-Moore字符串匹配算法

Boyer-Moore字符串匹配算法是一种高效的字符串查找算法,它使用了坏字符规则和好后缀规则来提高匹配效率。坏字符规则规定,当模式串中的某个字符与目标串中的某个字符不匹配时,模式串应该向右移动几个字符再进行比较。好后缀规则规定,当模式串中的某个后缀与目标串中的某个前缀匹配时,模式串应该向左移动几个字符再进行比较。Boyer-Moore字符串匹配算法的时间复杂度为O(m+n),其中m是模式串的长度,n是目标串的长度。

Rabin-Karp字符串匹配算法

Rabin-Karp字符串匹配算法是一种基于哈希函数的字符串查找算法。该算法将模式串和目标串都映射为哈希值,然后比较两个哈希值是否相等。如果两个哈希值相等,则进一步比较模式串和目标串中的对应字符是否相等。Rabin-Karp字符串匹配算法的时间复杂度为O(m+n),其中m是模式串的长度,n是目标串的长度。

Trie树字符串查找算法

Trie树是一种树形数据结构,它可以高效地存储字符串。Trie树中的每个节点代表一个字符,而每个节点的子节点代表该字符的后继字符。Trie树字符串查找算法通过在Trie树中搜索模式串来查找目标串。Trie树字符串查找算法的时间复杂度为O(m),其中m是模式串的长度。第三部分朴素字符串匹配算法步骤。关键词关键要点【朴素字符串匹配算法步骤】:

1.算法原理:朴素字符串匹配算法是一种简单而直接的字符串匹配算法,它通过逐个字符比较的方式来确定目标字符串是否在给定字符串中出现。算法从给定字符串的第一个字符开始,依次与目标字符串的第一个字符进行比较,如果相等,则继续比较后面的字符,直到比较到目标字符串的最后一个字符,如果全部相等,则返回目标字符串在给定字符串中的位置。如果在比较过程中发现不相等,则从给定字符串的下一个字符开始,重复上述过程,直到找到目标字符串或达到给定字符串的末尾。

2.算法特点:朴素字符串匹配算法的优点是易于理解和实现,时间复杂度为O(mn),其中m为目标字符串的长度,n为给定字符串的长度。算法的缺点是当目标字符串很长时,比较次数会很多,效率较低。

3.算法应用:朴素字符串匹配算法广泛应用于文本搜索、模式匹配、数据挖掘等领域,例如,在搜索引擎中,当用户输入一个查询关键词时,搜索引擎会使用朴素字符串匹配算法在海量网页中查找包含该关键词的网页。在数据挖掘中,朴素字符串匹配算法可以用来查找数据集中满足特定条件的记录。朴素字符串匹配算法步骤:

1.预处理:在模式字符串中查找并记录每个字符的出现位置,形成一个模式表。

2.字符匹配:从文本字符串的第一个字符开始,依次与模式字符串的第一个字符进行比较。如果匹配,则继续比较下一个字符,直到模式字符串的最后一个字符。如果在整个文本字符串中没有找到匹配的模式字符串,则算法结束。如果找到匹配的模式字符串,则记录其位置并继续查找下一个匹配的模式字符串。

3.模式移动:如果当前字符不匹配,则将模式字符串向右移动一位,并从文本字符串的当前位置继续比较。

4.循环重复:重复步骤2和步骤3,直到文本字符串中没有更多的字符可以比较。

朴素字符串匹配算法的优点:

*实现简单,易于理解和编码。

*不需要预先处理文本字符串。

*可以处理任意长度的模式字符串和文本字符串。

朴素字符串匹配算法的缺点:

*在最坏的情况下,时间复杂度为O(mn),其中m是模式字符串的长度,n是文本字符串的长度。

*对于存在大量重复字符的模式字符串和文本字符串,算法的效率较低。

改进朴素字符串匹配算法的方法:

*使用Knuth-Morris-Pratt(KMP)算法:KMP算法利用模式字符串的失败函数来提高匹配效率。

*使用Boyer-Moore算法:Boyer-Moore算法利用模式字符串的坏字符规则和好后缀规则来提高匹配效率。

*使用Rabin-Karp算法:Rabin-Karp算法使用哈希函数来快速比较模式字符串和文本字符串。第四部分实现朴素字符串匹配算法关键步骤。关键词关键要点朴素字符串匹配算法概述

1.朴素字符串匹配算法是一种常用的字符串查找算法,其基本思想是将模式串与文本串逐个字符进行比较,当发现模式串与文本串中某个子串匹配时,则输出匹配结果。

2.朴素字符串匹配算法的时间复杂度为O(mn),其中m为模式串的长度,n为文本串的长度。

3.朴素字符串匹配算法的实现非常简单,可以很容易地用计算机编程实现。

朴素字符串匹配算法的关键步骤

1.预处理阶段:在预处理阶段,需要计算模式串的哈希值。哈希值是一个整数,它可以唯一地标识一个字符串。

2.查找阶段:在查找阶段,需要逐个比较模式串与文本串的哈希值。如果两个哈希值相等,则需要进一步比较两个字符串的字符是否完全相等。

3.输出阶段:如果两个字符串的字符完全相等,则输出匹配结果。否则,继续比较下一个文本串的子串。

朴素字符串匹配算法的优化

1.Rabin-Karp算法:Rabin-Karp算法是朴素字符串匹配算法的一种优化算法。Rabin-Karp算法使用滚动哈希的方法来计算哈希值,可以大大提高算法的效率。

2.Knuth-Morris-Pratt算法:Knuth-Morris-Pratt算法是朴素字符串匹配算法的另一种优化算法。Knuth-Morris-Pratt算法使用失败函数来优化查找过程,可以进一步提高算法的效率。

3.Boyer-Moore算法:Boyer-Moore算法是朴素字符串匹配算法的又一种优化算法。Boyer-Moore算法使用坏字符规则和好后缀规则来优化查找过程,可以进一步提高算法的效率。朴素字符串匹配算法,又称暴力匹配算法,是一种简单且易于实现的字符串匹配算法。其基本思想是,将模式串与目标串逐个字符进行比较,如果发现模式串与目标串中某一段字符完全匹配,则认为模式串在目标串中出现了。

实现朴素字符串匹配算法的关键步骤如下:

1.模式串预处理:在模式串上运行预处理过程,以便在匹配过程中提高效率。常见预处理方法有:

-构建失配表(FailureTable):失配表中存储了模式串的每个字符在模式串中出现的位置。当匹配过程中遇到失配时,可以快速找到下一个匹配位置。

-构建好后缀树(SuffixTree):好后缀树是一种数据结构,可以有效地处理字符串匹配问题。在好后缀树中,每个节点代表模式串的一个后缀子串。当匹配过程中遇到失配时,可以快速找到下一个匹配位置。

2.匹配过程:

-逐个字符比较模式串和目标串。

-如果模式串与目标串中某一段字符完全匹配,则认为模式串在目标串中出现了。

-如果模式串与目标串中某一段字符不完全匹配,则将模式串向右滑动一位,并重复步骤2。

3.终止条件:直到模式串完全匹配目标串中的某一段字符,或者模式串完全滑出目标串,匹配过程结束。

朴素字符串匹配算法的平均时间复杂度为O(mn),其中m为模式串的长度,n为目标串的长度。在最坏的情况下,朴素字符串匹配算法的时间复杂度为O(mn)。

朴素字符串匹配算法虽然简单易于实现,但效率较低。因此,在实际应用中,通常会采用更加高效的字符串匹配算法,例如KMP算法、BM算法或Aho-Corasick算法等。第五部分Knuth-Morris-Pratt匹配算法简介。关键词关键要点【Knuth-Morris-Pratt匹配算法简介】:

1.Knuth-Morris-Pratt(KMP)匹配算法是一种字符串匹配算法,用于在给定的文本中查找子字符串。它由三位计算机科学家唐纳德·克努斯、詹姆斯·H·莫里斯和沃伦·普拉特于1977年提出。

2.KMP算法的工作原理是通过计算子字符串的前缀函数来快速跳过文本中不匹配的位置。前缀函数是一个数组,其中每个元素表示子字符串的前缀与该元素之前的文本在多大程度上匹配。

3.KMP算法的优点是它可以避免重复比较,从而提高匹配速度。它还可以在文本中查找多个子字符串,而无需为每个子字符串重新计算前缀函数。

【Knuth-Morris-Pratt匹配算法的应用】:

#Knuth-Morris-Pratt匹配算法简介

Knuth-Morris-Pratt(KMP)算法是一种用于字符串匹配的算法,由DonaldKnuth、JamesH.Morris和VaughanR.Pratt于1977年发表。该算法利用了模式串的特性,在比较过程中可以跳过不匹配的部分,从而提高了匹配效率。

#算法思想

KMP算法的基本思想是利用模式串的前缀和后缀之间的关系来建立一个失败函数(failurefunction)。失败函数f(x)定义为模式串中与模式串的前缀s[0],s[1],...,s[x-1]相同的最长后缀的长度。

例如,对于模式串“abab”,其失败函数为:

f(0)=0

f(1)=0

f(2)=1

f(3)=2

有了失败函数之后,就可以在给定的文本串中进行匹配。从文本串的第一个字符开始,依次与模式串的字符进行比较。如果匹配成功,继续比较下一个字符;如果匹配失败,则利用失败函数跳过不匹配的部分,继续与下一个字符进行比较。

例如,在文本串“abcabcabab”中查找模式串“ab”。从文本串的第一个字符开始,依次与模式串的字符进行比较。

*比较“a”和“a”,匹配成功,继续比较下一个字符。

*比较“b”和“b”,匹配成功,继续比较下一个字符。

*比较“c”和“a”,匹配失败,利用失败函数跳过不匹配的部分,继续与下一个字符进行比较。

*比较“a”和“a”,匹配成功,继续比较下一个字符。

*比较“b”和“b”,匹配成功,匹配成功,模式串“ab”在文本串中找到。

#算法实现

KMP算法的实现主要分为两部分:

*计算失败函数:可以使用以下公式计算失败函数:

```

```

其中,s[x]表示模式串中第x个字符。

*匹配过程:从文本串的第一个字符开始,依次与模式串的字符进行比较。如果匹配成功,继续比较下一个字符;如果匹配失败,则利用失败函数跳过不匹配的部分,继续与下一个字符进行比较。如果模式串的最后一个字符与文本串的当前字符匹配成功,则匹配成功。

#算法分析

KMP算法的时间复杂度为O(n+m),其中n是文本串的长度,m是模式串的长度。空间复杂度为O(m),其中m是模式串的长度。

KMP算法的优势在于,它可以在比较过程中跳过不匹配的部分,从而提高了匹配效率。在实际应用中,KMP算法经常被用于字符串搜索、文本处理、数据挖掘等领域。第六部分实现KMP算法核心思想。关键词关键要点【KMP算法的核心思想】:

1.KMP算法的核心思想是利用部分匹配表(PartialMatchTable)来减少模式与文本的比较次数,从而提高字符串查找的效率。

2.部分匹配表是一个长度与模式长度相同的数组,其中每个元素表示模式的前缀和后缀的最长公共子序列的长度。

3.部分匹配表可以通过动态规划的方法来计算,具体步骤如下:

-初始化部分匹配表的第一项为0。

-对于模式的每个字符,从第二个字符开始,计算其部分匹配表的值。

-如果当前字符与模式的前缀相同,则将部分匹配表的值设为前一个字符的部分匹配表的值加1。

-否则,将部分匹配表的值设为0。

【KMP算法的步骤】:

实现KMP算法核心思想

KMP算法的核心思想是利用字符串的模式串和匹配串的子串之间的关系来减少不必要的比较次数,从而提高字符串匹配的效率。KMP算法的关键在于其失配数组(也称为next数组)的计算。失配数组是一个与模式串长度相等的数组,它存储了模式串中每个字符失配时需要跳过的字符数。

失配数组的计算过程如下:

1.初始化失配数组的第一项为-1,表示模式串的第一个字符没有失配的字符。

2.对于模式串的每个字符,计算其失配数组的值。假设当前字符为模式串的第i个字符,则其失配数组的值为:

-如果该字符与模式串的第i-1个字符相等,则其失配数组的值等于模式串的第i-1个字符的失配数组的值。

-如果该字符与模式串的第i-1个字符不相等,则其失配数组的值等于模式串的第i-1个字符的失配数组的值加1。

失配数组计算完成后,就可以利用它来进行字符串匹配。字符串匹配的过程如下:

1.将模式串和匹配串都转换为整数数组,其中每个字符对应一个整数。

2.将失配数组也转换为整数数组。

3.将模式串的第一个字符与匹配串的第一个字符进行比较。如果两个字符相等,则继续比较模式串的第二个字符与匹配串的第二个字符,依此类推。

4.如果在比较过程中遇到失配,则将模式串的起始位置向后移动失配数组中对应字符的数值,然后继续比较。

5.重复步骤3和步骤4,直到模式串的最后一个字符与匹配串的某个字符相等,或者模式串的起始位置超过了匹配串的长度。

如果模式串的最后一个字符与匹配串的某个字符相等,则说明模式串在匹配串中找到了匹配项。否则,说明模式串在匹配串中没有匹配项。

KMP算法的时间复杂度为O(m+n),其中m是模式串的长度,n是匹配串的长度。KMP算法是字符串匹配算法中最常用的算法之一,因为它具有时间复杂度低、空间复杂度小、易于实现等优点。第七部分Boyer-Moore匹配算法的实现要点。关键词关键要点【预处理】:

1.分析模式字符串,计算好每个字符的坏字符值。

2.计算模式字符串的末尾字符对应的良好后缀值。

3.组合坏字符值和良好后缀值,生成预处理表。

【匹配】:

一、基本思想

Boyer-Moore算法的基本思想是:在模式串中寻找一个字符,该字符在模式串中出现的位置越靠后,其在模式串中出现的频率就越高。因此,在模式串中匹配时,可以先从该字符开始匹配,如果匹配成功,则继续匹配下一个字符;如果匹配失败,则将模式串向右移动一定距离,并从该字符的下一个位置开始匹配。

二、算法步骤

1.构建坏字符表:

-对于模式串中的每个字符,计算其在模式串中最后出现的位置。

-将这些最后出现的位置存储在一个表中,称为坏字符表。

2.构建好后缀表:

-对于模式串的每个后缀,计算其在模式串中第一次出现的位置。

-将这些第一次出现的位置存储在一个表中,称为好后缀表。

3.匹配过程:

-将模式串与目标串对齐,使得模式串的第一个字符与目标串的第一个字符对齐。

-从模式串的最后一个字符开始,逐个字符地向左匹配。

-如果匹配成功,则模式串与目标串匹配成功,退出匹配过程。

-如果匹配失败,则将模式串向右移动一定距离,并从该字符的下一个位置开始匹配。

三、算法实现要点

1.构建坏字符表时,可以使用哈希表来存储模式串中的每个字符及其最后出现的位置。这样,可以快速地查找每个字符的最后出现位置。

2.构建好后缀表时,可以使用后缀树来存储模式串的所有后缀及其第一次出现的位置。这样,可以快速地查找每个后缀的第一次出现位置。

3.匹配过程中,如果模式串的最后一个字符与目标串的最后一个字符匹配失败,则将模式串向右移动一定距离,并从该字符的下一个位置开始匹配。移动的距离可以根据坏字符表和好后缀表来确定。

4.为了提高匹配效率,可以在匹配过程中使用剪枝技术。剪枝技术可以减少不必要的匹配操作,从而提高匹配速度。

四、算法性能分析

Boyer-Moore算法的平均时间复杂度为O(nm),其中n是目标串的长度,m是模式串的长度。在最好的情况下,Boyer-Moore算法的时间复杂度为O(n+m),在最坏的情况下,Boyer-Moore算法的时间复杂度为O(nm)。

Boyer-Moore算法是一种非常高效的字符串匹配算法,它在实际应用中得到了广泛的使用。第八部分Boyer-Moore-Horspool算法的匹配思想。关键词关键要点Boyer-Moore-Horspool算法的匹配思想

1.匹配规则:当模式串的最后一个字符与目标字符串中的一个字符匹配时,将模式串向左平移,使这个字符与目标字符串的下一个字符对齐,然后继续比较;如果匹配失败,则将模式串向右平移,使它的第一个字符与目标字符串的下一个字符对齐,然后继续比较。

2.匹配过程:当模式串的最后一个字符与目标字符串中的字符匹配时,首先检查模式串的倒数第二个字符是否与目标字符串的下一个字符匹配。如果匹配,则继续检查模式串的倒数第三个字符是否与目标字符串的下一个字符匹配,依此类推。如果在模式串中找到一个字符与目标字符串中的某个字符不匹配,则将模式串向右平移,使它的第一个字符与目标字符串的下一个字符对齐,然后继续比较。

3.特定规则:Boyer-Moore-Horspool算法在匹配过程中会根据目标字符串的字符值计算出一个移位表,其中每个字符值对应一个移位距离。当匹配失败时,算法会根据目标字符串当前字符的值在移位表中查找对应的移位距离,然后将模式串向右平移这个距离,继续进行比较。

Boyer-Moore-Horspool算法的优点

1.快速:Boyer-Moore-Horspool算法的平均时间复杂度为O(n+m),其中n是目标字符串的长度,m是模式串的长度。这一时间复杂度远优于朴素字符串查找算法的O(nm)时间复杂度。

2.高效:Boyer-Moore-Horspool算法在匹配过程中使用了移位表,可以减少不必要的比较,从而提高匹配效率。

3.通用:Boyer-Moore-Horspool算法可以适用于各种不同的字符串查找场景,包括文本搜索、模式匹配和数据检索等。

Boyer-Moore-Horspool算法的局限性

1.最坏情况:在最坏的情况下,Boyer-Moore-Horspool算法的时间复杂度可能达到O(nm)。当模式串中有很多重复字符时,算法可能会在目标字符串中进行大量不必要的比较。

2.内存开销:Boyer-Moore-Horspool算法需要在匹配过程中计算移位表,这可能会带来额外的内存开销。

3.特定场

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论