字符串相关
1、如果反斜杠后面跟着八进制数字超过3个,只有前面3个数字与\构成转义序列。
\x1234,表示的是一个16进制数字,后面跟着的数字应该是4位,超过4位的处理和八进制一样。
2、用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,至少需要()长的二进制字符串。
需要对abcd进行霍夫曼编码。根据权值建立霍夫曼数,得到最优编码,编码不唯一。
若:
a=1
b=01
c=000
d=111
则总位数为:1+2+3+3+1+2+1+1=13
3、对字符串进行全排列:
几种不同的方式?
首先整体按顺序排A,上下角标为字符串整体长度,但是可能有字母重复,一个字母重复将结果除以2,两个除以4,以此类推。
4、串中任意个连续的字符组成的子序列称为该串的子串。注意:这里的连续的连续的连续的
5、设有两个串S1和S2,求S2在S1中首次出现位置的运算称为求子串。
6、char s[8];s是个数组名,等价于数组的地址,不能用其直接赋值s=“good”。
7、空串:零个字符的串,它的长度为0;
空格串也称为空白串:由一个或者多个空格组成的串,它的长度为串中空格字符的个数。
8、串是字符的有限序列;‘
模式匹配是串的一种重要运算;
串既可以采用顺序存储,也可以采用链式存储。
9、MFC中的CString是类型安全的类。
\0后面的字符是八进制数。
10、非空子串的个数共有n(n+1)/2个,如果相同子串算一个,要减去多余的字符,比如:www.qq.com,需要减去2个w,1个q,1个.,1个ww
11、在字符串数组中char * s[i]
s+i表示指针数组的地址。
s[i]表示取数组的值;(和 *(s+i)一样吗?)
*s[i]表示这个元素内保存的地址
&s[i]相当于s+i,表示指针数组的地址
12、算next值:
字符串的前缀和后缀(这里的前缀是不包括最后一个字符的子串,后缀是不包含第一个字符的子串)
比如:“babab”,
首先第一位0,第二位1,这个是固定的。
第三位,字符串是“bab”,这个时候“bab”的前缀有b,ba;后缀有ab,b,可以看出前后缀相等的最长的字符串只有b,因为b的长度为1,所以这第三位的next值就是1;
到了第四位,字符串时“baba”,前缀是bab,ba,b,后缀是aba,ba,a,前后缀相等的最长字符串是ba,长度为2,因此第四位的next值是2;
第五位,字符串是“babab”,前缀是baba,bab,ba,b,后缀是abab,bab,ab,b,前后缀相等的最长字符串是bab,其长度为3,所以第四位的next值为3
综上,next值为01123
13、字符串是一种特殊的线性表;
字符串可以连续存储,也可以链式存储;
15、字符常量是用单引号括起来的一个字符。
13、Linux在给定文件中查找与设定条件相符字符串的命令为grep.
16、在霍夫曼树中,出现频率越高的节点越接近根,深度越小即编码值位数越短;出现频率越低的节点越远离根,深度越大即编码位数越长。
17、字符串是一种对象,是一种引用数据类型。
18、寻找子串首次出现的位置叫做字符串匹配。
19、当注明空串也是子串时,求子串数目n(n+1)/2,后记得加一才是总的子串数目。
20、strcpy(s1,s2)是把s2字符拷贝到s1这个字符串中,同时也把s2的‘\0’拷贝过去(字符串最后以‘\0’结束)其也占一个字符的位置,但是最后计算字符串长度用strlen()的话,不计算’\0’在内,因为其遇到’\0’停止。
在strcpy(s1,s2)函数,如果s1被覆盖之后,空间足够还保留自己的那部分。