面试常考的算法题(@20081031)

来源:互联网 发布:mac修改睡眠时间 编辑:程序博客网 时间:2024/05/10 13:54

网上找的,面试常考的算法题。抛砖引玉~~~~~

 

------------------------------ 

 

 

  字符串相关
  1.将字符串逆序,要求时间空间最省。
  2.字符串求子串,String substring(String orginal,int i,int j)
  3.字符串替换。String replace(String orginal, String sub,String replacement)
  4.寻找字符串中第一个无重复字符。如"teenage",第一个无重复字符就是t,如"teetel",则第一个无重复字符就是l,要求高效。
  5.高效删除特定字符。要求删除指定字符串中所有含remove出现的字符。如"I am a good student",需要删除"aeiou",则结果应该为"I m  gd stdnt"
  6.括号匹配问题。编程将无法匹配的左括号与右括号找出来,并在输入列下方把它们标出来。如((A+B)+-*/(X+Y)()((())ABC)
              $
  7.寻找部分序列。如text[]是"abcdefg",pat[]是"aceg"。则pat[]为text[]的子序列,并且把pat[]在text[]中各符号的位置记录下来
  8.最长公共部分序列。如果A是一个长m的字符串,把其中若干符号去掉得到的新字符串就称为A的部分序列。如A=abc0123,则b02,abc123,b3,c,abc0123,ab12等都是A的部分子序列。假定给出两个字符串A,B,长度分别为m和n,那么A,B就含有若干共同的部分序列,如果C既是A的部分序列又是B的部分序列,则C是A与B的共同部分序列。
  9.整数与字符串之间的转换。int StrToInt(char str[]); void IntToStr(int num, char str[]);
  链表问题
  1.链表中倒数第m个元素。给定一个单向链表,设计一个既省时间又省空间的算法求该链表的倒数第m个元素。(当m等于0时,链表的最后一个元素将被返回)
  2.改错。
  void RemoveHead(node *head)
  {
     free(head);
     head = head->next;
  }
  3.一个单链表,元素都是整数。head和tail分别是指向该链表第一个元素(头元素)和最后一个元素(尾元素)的全局性指针。实现
  int Delete(element * elem);其中elem就是那个将被删除的元素。
  int InsertAfter(element * elem, int data);第二个输入参数给出了新元素取值,它将被插入到第一个输入参数所指定元素的后面。当需要插入一个新元素时,第一个输入参数被设置为Null,如果成功,函数返回1,否则0
  排序问题
  1.快排,冒泡
  2.
  查找问题
  1.寻找极小值。一个数组是循环排列的,如x0<……<……< DIV>
  2.一个数组,不知道其元素个数,但是数组元素依序从小到大排好,而且在数组最后添加了足够多的最大数。编程找出数组中某给定值。
  3.寻找脚码。一个整数数组x[],其中的元素彼此都不相同,而且也已经从小到大排列好。用比较大小,相等的方式编写一个程序,找出给定的数组中是否有一个元素满足x[i] = i。如x[]={-2,-1,3,7,8},x[3]=3
  其他类
  1.如何最有效的判断一个数是不是2的n次幂。
  2.有一个数组char array[n],编写void malloc(int i),模拟内存分配。
原创粉丝点击