Python程序员面试分类真题.pdf

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Python程序员面试分类真题13

1.给定一个如下格式的字符串:(1,(2,3),(4,(5,6),7)),括号内的元素可

以是数字,也可以是另一个括号,实现一个算法消除嵌套的括号,例如把上面

的表达式变成((江南博哥)1,2,3,4,5,6,7),如果表达式有误,那么报错。

正确答案:

从问题描述可以看出,这道题要求实现两个功能:一个是判断表达式是否正

确,另一个是消除表达式中嵌套的括号。对于判定表达式是否正确这个问题,

可以从如下几个方面来入手:首先,表达式中只有数字、逗号和括号这几种字

符,如果有其他的字符出现,那么是非法表达式。其次,判断括号是否匹配,

如果碰到‘(’,那么把括号的计数器的值加上1;如果碰到‘)’,那么判断此

时计数器的值,如果计数器的值大于1,那么把计数器的值减去1,否则为非法

表达式,当遍历完表达式后,括号计数器的值为0,则说明括号是配对出现的,

否则括号不配对,表达式为非法表达式。对于消除括号这个问题,可以通过申

请一个额外的存储空间,在遍历原字符串的时候把除了括号以外的字符保存到

新申请的额外的存储空间中,这样就可以去掉嵌套的括号了。需要特别注意的

是,字符串首尾的括号还需要保存。实现代码如下:

#方法功能:去掉字符串中嵌套的括号

defremoveNestedPare(strs):

ifstrs==None:

returnstrs

Parentheses_num=O#用来记录不匹配的”(出现的次数

iflist(strs)[o]!=(orlist(strs)[-1]!=):

returnNone

sb=(

#字符串首尾的括号可以单独处理

i=1

whileilen(strs)-1:

ch=list(strs)[i]

ifch==(:

Parentheses_num+=1

elifch==)′:

Parentheses_num-=1

else:

sb=sb+(list(strs)[i])

i+=1

#判断括号是否匹配

ifParentheses_num!=0:

print由于括号不匹配,因此不做任何操作

returnNone

#处理字符串结尾的)

sb=sb+)

returnsb

if_name_==_main_:

strs=(1,(2,3),(4,(5,6),7))

printstrs+去除嵌套括号后为:+removeNestedPare(strs)

程序的运行结果为:

(1,(2,3),(4,(5,6),7))去除嵌套括号后为:(1,2,3,4,5,6,7)

算法性能分析:

这种方法对字符串进行了一次遍历,因此时间复杂度为O(N)(其中,N为

字符串的长度)。此外,这种方法申请了额外的N+1个存储空间,因此空间复杂

度也为0(N)。

[考点]如何消除字符串的内嵌括号

2.写一个方法,检查字符串是否是整数,如果是整数,那么返回其整数值。

正确答案:

整数分为负数与非负数,负数只有一种表示方法,而非负数可以有两种表示方

法。例如:-123,123,+123。因此在判断字符串是否为整数的时候,需要把这

几个问题都考虑到。下面主要介绍两种方法。

方法一:递归法

对于整数而言,例如123,可以看成12*10+3,而12又可以看成1*10+2。

而-123可以看成(-12)*10-3,-12可以被看成(-1)*10-2。根据这个特点可以采

用递归的方法来求解,可以首先根据字符串的第一个字符确定整数的正负,接

着对字符串从右往左遍历,假设字符串为“clc2c3cn”,如果cn不是整数,

那么这个字符串不能表示成整数;如果这个数是非负数(c1!=’-),那么这个整

数的值为“c1c2c3cn-1”对应的整数值乘以10加上cn对应的整数值,如果

这个数是负数(c1==-),那么这个整数的值为clc2c3%·cn-1对应的整数值乘

以10减去cn对应的整数值。而求解子字符串“c1c2c3sc-1”对应的整数的

时候,可以用相同的方法来求解,因此可以采用递归的方法来求解。对于

文档评论(0)

bamboo + 关注
实名认证
内容提供者

太懒,没写

1亿VIP精品文档

相关文档