热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:程序员面试修炼01|腾讯2017笔试题

篇首语:本文由编程笔记#小编为大家整理,主要介绍了程序员面试修炼01|腾讯2017笔试题相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了程序员面试修炼01 | 腾讯2017笔试题相关的知识,希望对你有一定的参考价值。









靠代码行数来衡量开发进度,就像是凭重量来衡量飞机制造的进度。——比尔·盖茨












名词解释




程序员面试修炼01 | 腾讯2017笔试题





面试真题







题目(2017腾讯笔试题):


给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?


 


输出需要删除的字符个数





输入描述:



输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.


输出描述:



对于每组数据,输出一个整数,代表最少需要删除的字符个数。


输入例子:



abcda 
google


输出例子:




2



解题思路

本题可以转换为求该字符串与其反序字符串的最长公共子序列问题,即利用LCS算法求解。

例如:abcda的反序字符串为adcba,最长公共子序列为aba,其公共子序列必为回文序列,然后可求出最少删除多少个字节使其成为回文字符串。

本题采用动态规划来求解问题,下面看看模拟的推导过程。

状态转移方程为:(令A为输入字符串,B为其反序字符串,num[][]记录当前最长公共子序列的长度) 

if&#x3000;(A[i]==B[j])&#x3000;num[i][j]=num[i&#x2212;1][j&#x2212;1]+1" role="presentation">
if (A[i]==B[j]) 

num[i][j]=num[i−1][j−1]+1

i


f



 



(


A


[


i


]


==


B


[


j


]


)



 



n


u


m


[


i


]


[


j


]


=


n


u


m


[


i





1


]


[


j





1


]


+


1



else 

num[i][j]=max(num[i1][j], num[i][j-1])








































































0 a b c d a
0 0 0 0 0 0 0
a 0 1 1 1 1 2
d 0 1 1 1 2 2
c 0 1 1 2 2 2
b 0 1 2 2 2 2
a 0 1 2 2 2 3

下面来看解题代码(如果代码页面超出可以左右上下移动):

#include
#include <iostream>
#include
#include
#include
using namespace std;
int main(){    
   string s;    
   while(cin>>s){        
       int len = s.length();        
       int maxlen = 0;        
       vector<vector<int> > Vec;      
        for(int i = 0 ; i 1 ; i++){          
           vector<int> temp(len+1,0);
           Vec.push_back(temp);
       }        
       for(int i = 1; i1 ; i++){            
            for(int j = 1 ; j 1;j++){                
                if(s[i-1]==s[len-j]){
                   Vec[i][j] = Vec[i-1][j-1]+1;
               }                
                else {
                   Vec[i][j] = max(Vec[i-1][j],Vec[i][j-1]);
               }
           }
       }        
        cout<    }
}

程序员面试修炼01 | 腾讯2017笔试题





技术知识点








网络七层协议




OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。






应用层





与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:TELNET,HTTP,FTP,NFS,SMTP等。






表示层





这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。






会话层





它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。






传输层





这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。






网络层









数据链路层





它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等。






物理层





OSI的物理层规范是有关传输介质的特这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。









程序员面试修炼01 | 腾讯2017笔试题


刚刚考完腾讯笔试的不要灰心,全力刷题,备战下一次的笔试以及面试。














推荐阅读
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • 本文详细介绍了笔记本电脑上多种实用的快捷键,包括屏幕调整、图形设置、分辨率更改、驱动更新、导航操作、音量控制及屏幕锁定等,旨在帮助用户更高效地使用笔记本电脑。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • 每种编程语言都有其独特的完成任务的方式,这也说明了为什么有这么多语言可供选择。在JimHall的《不同的编程语言如何完成相同的事情》文章中,他演示了13种不同的语言如何使用不同的语 ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 本文详细介绍了在 Python 中如何有效去除浮点数末尾的无意义零及不必要的点,提供多种实现方法,并深入探讨了浮点数在计算机中的表示方式及其可能带来的精度问题。 ... [详细]
author-avatar
cc辰辰cc小宝宝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有