互联网大公司面试笔试题开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
思路:利用栈的思想每次遇到“..”时,将退栈至上一个'/' 位置。
1. #include
2. #include
3. #include
4.
5. char * convert_path_opt (const char * path )
6. {
7. char * result = NULL ;
8. int top = 0 ;
9. int path_len = 0 ,
10. index = 0 ,
11. point_cnt = 0 ;
12.
13. / ** 14. if (NULL == path ) 15. { 16. fprintf (stderr ,“convert_path_opt:invalid argument。\ n” ); 17. 返回NULL ; 18. } 19. 20. / ** <分配内存* / 21. path_len = strlen (path ); 22. result = (char *)malloc (path_len * sizeof (char )); 23. if (NULL == 结果) 24. { 25. fprintf (stderr ,“convert_path_opt:无法访问malloc。\ n”); 26. 返回NULL ; 27. } 28. 29. / ** 30. while (index < path_len ) 31. { 32. / ** <点之前复制字符。* / 33. while (index < path_len && path [ index ] != '。' ) 34. { 35. result [ top ++] = path [ index ++]; 36. } 37. 38. / ** <反点。* / 39. for (point_cnt = 0 ; 40. index < path_len && path [ index ] == '。' ; 41. ++ point_cnt ,++ index ); 42. 43. if (point_cnt == 2 ) 44. { 45. - 顶部; 46. while (- top > 0 && result [ top ] != '/' ); 47. ++ 顶部; 48. } 49. 50. ++ index ; 51. } 52. 53. 结果[ top ] = '\ 0' ; 54. 55. 返回结果; 56.} 57. 58.int main () 59.{ 60. char * path = “/ home / news /。/。/ tmp / game /../”; 61. char * result = NULL ; 62. 63. result = convert_path_opt (path ); 64. printf (“\ nResult is%s。\ n”,result ); 65. 66. 返回0 ; 67.} 1. 1. 2. 比较两个字符串的不同,返回不同点的位置(相对第二字符串而言) 1. 2. 1. #include 3. 4. char * compare_strings (const char * plhs , 5. const char * prhs ) 6. { 7. int lhs_index = 0 , 8. rhs_index = 0 ; 9. 10. / ** <检查参数。* / 11. if (NULL == plhs || NULL == prhs ) 12. { 13. fprintf (stderr ,“copmare_strings:invalid argument。\ n”); 14. 返回NULL ; 15. } 16. 17. / ** <比较* / 18. 而(plhs [ lhs_index ] != '\ 0' 19. && prhs [ rhs_index ] != '\ 0' ) 20. { 21. if (plhs [ lhs_index ] != prhs [ rhs_index ] ) 22. 打破; 23. ++ lhs_index ; 24. ++ rhs_index ; 25. } 26. 27. return prhs + rhs_index ; 28.} 29. 30.int main () 31.{ 32. char * plhs = “你好,世界。”; 33. char * prhs = “你好,世界。”; 34. char * pdiff = NULL ; 35. 36. pdiff = compare_strings (plhs ,prhs ); 37. printf (“\ nDifference is%s。\ n”,pdiff ); 38. 39. 返回0 ; 40.} 41. 1. 42.3. 给定一个100 亿的整数文件,输出前100 个最小值。 43. 44. 45. 46.思路:大数据+ top k 问题。 47. 48. 1. #include 49.#include 50.#include 51. 52./ ** 53.struct max_heap 54.{