串的实现方法有定长顺序串、堆串和块链串。

定长顺序串

仅在做串插入、串连接和串置换时会出现串值序列的长度超过MAXSIZE,将丢弃超过MAXSIZE部分的字符序列。
1.串插入三种情况,复杂度O(原有串长度+要插入的串长度)
串的next数组https://blog.csdn.net/iamyvette/article/details/77433991
https://blog.csdn.net/wenyun_kang/article/details/65436838?locationNum=13&fps=1
简单匹配算法的时间复杂度为O(m*n),空间复杂度O(1),KMP匹配算法时间复杂度为O(m+n).,空间复杂度O(模式串长度)
java中,StringBuilder和StringBuffer的区别,下面说法错误的是?
正确答案: C 你的答案: C (正确)
StringBuffer是线程安全的
StringBuilder是非线程安全的
StringBuffer对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。
效率比较 String 小于StringBuffer 小于StringBuilder,但是在 String S1 = “This is only a” + “ simple” + “ test”时,String效率最高。
效率:StringString(大姐,出生于JDK1.0时代) 不可变字符序列 StringBuffer(二姐,出生于JDK1.0时代) 线程安全的可变字符序列 StringBuilder(小妹,出生于JDK1.5时代) 非线程安全的可变字符序列 。Java中的String是一个类,而并非基本数据类型。string是值传入,不是引用传入。 StringBuffer和StringBuilder可以算是双胞胎了,这两者的方法没有很大区别。但在线程安全性方面,StringBuffer允许多线程进行字符操作。 这是因为在源代码中StringBuffer的很多方法都被关键字 synchronized 修饰了,而StringBuilder没有。 StringBuilder的效率比StringBuffer稍高,如果不考虑线程安全,StringBuilder应该是首选。另外,JVM运行程序主要的时间耗费是在创建对象和回收对象上。

多型数据类型是指包含的数据元素的类型并不确定。
比如栈可以是整数栈、字符栈、对象栈等等。
但是字符串,它的元素必然是字符。

请问在64位平台机器下sizeof(string_a),sizeof(string_b)大小分别是()
1.char string_a=(char )malloc(100*sizeof(char));
2.char string_b[100];
正确答案:
8 100
不管指针是什么类型,在32位编译器下都是4字节,在64位下是8字节。区分开整形变量,在32和64下都是4字节,除非自己定义字节数。还有一点指针和它所指向的内容是分开存储的。可能不在一个位置。
数组名不等价于指针,只有数组名作为函数参数时,才退化为指针,此时数组名的sizeof()就是指针大小,除了这种情况,均是整个数组的大小。

若串S=’software’,其子串数目为(包括空串):
n(n+1)/2 + 1 此题n=8 8(8+1)/2 +1=37

考察堆区、栈区和字符常量区的区别
1. 栈区(stack sagment):由编译器自动分配释放,存放函数的参数的值,局部变量的值等。在Windows下,栈是高向低地址扩展的数据结构,是一块连续的内存的区 域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的是1M,总之是一个编译时就确定的常数), 如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。

2、堆区(heap sagment) :* 一般由程序员分配释放,若程序员不释放,程序结束时可能由系统回收 。*它与数据结构中的堆是两回事。堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表 的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

3、全局区(静态区)(data sagment):全局变量和静态变量的存储区域是在一起的,程序结束后由系统释放。数据区的大小由系统限定,一般很大。

4、文字常量区:常量字符串就是放在这里的, 程序结束后由系统释放。

5、程序代码区:存放函数体的二进制代码。
https://blog.csdn.net/a1950526232/article/details/24350715

主要掌握普通的模式匹配算法和KMP算法 、 基本的串的相关操作 、求子串的个数、相关的赋值操作。

长度为n的字符串

1、有n(n+1)/2 +1个子串;

2、非空子串:n(n+1)/2;

3、非空真子串:n(n+1)/2– 1。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值