计算机笔试/面试题

本文汇集了计算机科学面试中涉及字符串处理和数据结构的热门问题,包括字符串排列、字符排序、反转、字符查找、字符串压缩、回溯算法、字符串匹配等挑战。此外,还涵盖了链表、树、图的操作,如二叉树构建、遍历、逆转、查找最近公共节点等。问题涵盖算法设计、复杂度优化和数据结构应用,是准备技术面试的重要参考资料。
摘要由CSDN通过智能技术生成

【字符串】

1、输入一个字符串,打印出该字符串中字符的所有排列。
    例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。

2、有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面

    (大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法。

     c语言函数原型void proc(char *str),也可以采用你自己熟悉的语言。

3、编写反转字符串的程序,要求优化速度、优化空间。

4、用C语言实现函数void * memmove(void *dest, const void *src, size_t n)。

     memmove函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。
     分析:由于可以把任何类型的指针赋给void类型的指针,这个函数主要是实现各种数据类型的拷贝。

5、编程找出两个字符串中最大公共子字符串,如"abccade", "dgcadde"的最大子串为"cad"。

6、输入一个字符串,输出该字符串中对称的子字符串的最大长度。
     比如输入字符串"google",由于该字符串里最长的对称子字符串是"goog",因此输出4。

7、字符串原地压缩。题目描述:“eeeeeaaaff" 压缩为 "e5a3f2",请编程实现。

8、请以回溯与不回溯算法实现字符串匹配。

9、输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。

    为简单起见,标点符号和普通字母一样处理。
    例如:输入"I am a student.",则输出"student. a am I"。

10、在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。

11、写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
      功能:

      在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。
      例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789。
12、定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。
      如:把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数。
      要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。

13、有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接。
      问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。

14、如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。
      注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。
      请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。
      例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们的最长公共子串,

              则输出它们的长度4,并打印任意一个子串。
      分析:求最长公共子串(Longest Common Subsequence, LCS)是一道非常经典的动态规划题。

15、输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
      例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变成"Thy r stdnts."。
16、一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对,如abc和cba。

17、给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。

18、已知一个字符串,比如asderwsde,寻找其中的一个子字符串比如sde的个数,如果没有返回0,有的话返回子字符串的个数。

19、求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")。

20、实现strstr功能,即在父串中寻找子串首次出现的位置。

21、编码完成下面的处理函数。
      函数将字符串中的字符'*'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值