操作 |
时间复杂度(T(n)) |
空间复杂度(S(n)) |
判断是否为空 |
O(1) |
O(1) |
得到长度 |
O(1) |
O(1) |
清空字符串 |
O(1) |
O(1) |
比较两个字符串 (长度分别为m,n) |
O(min(m,n)) |
O(1) |
比较两个字符串 (长度分别为m,n) |
O(n) |
O(n) |
在字符串1中查找字符串2(长度分别为m,n) |
O((m-n+1)*n^2) O(m-n+1):字符串1中最多有m-n+1个长度为n的子字符串 O(n):截取一个长度为n的子字符串 O(n):比较两个长度均为n的字符串 |
O((m-n+1)*n) O(m-n+1):字符串1中最多有m-n+1个长度为n的子字符串 O(n):截取一个长度为n的子字符串 |
截取子字符串 |
O(n):表示是线性的,下同 |
O(n) |
插入字符串 |
O(n) |
O(n) |
删除字符串 |
O(n) |
O(n) |
/* 数据结构分析与学习专栏
* Copyright (c) 2015, 山东大学计算机科学与技术专业学生
* All rights reserved.
* 作 者: 高祥
* 完成日期: 2015 年 4 月 7 日
* 版 本 号:014
*任务描述:针对字符串,实现15个基本操作
* 1:建立字符串
* 2:输出字符串
* 3:判断字符串是否为空
* 4:求字符串的长度
* 5:清空字符串
* 6: 比较两个字符串的大小
* 7:连接两个字符串并将结果返回到第一个字符串中
* 8:在字符串1中查找字符串2出现第一次的首字符的索引
* 9:输出字符串的某一子字符串
* 10:在当前字符串中的某位置插入另一个字符串
* 11:在当前字符串中的某位置删除一个字符串
*主要函数:
* 1.void StringAssign(String &str,char *chars);//创建字符串
* 2.void Output(String str);//输出字符串
* 3.Status IsEmpty(String str);//判断字符串是否为空
* 4.void StringLength(String str);//求字符串的长度
* 5.void ClearString(String &str);//清空字符串
* 6.Status StringCompare(String str1,String str2);//比较两个字符串的大小
* 7.void ContactString(String &str1,String &str2);//连接两个字符串
* 8.void IndexOfString(String str1,String str2);//求字符串2在字符串1中第一次出现的首字符位置索引
* 9.String SubString(String str,int pos,int length);//截取子字符串并返回
* 10.void StringInsert(String &str1,String str2,int pos);//在字符串1中位置为POS处插入字符串2
* 11.void