2018春招-美团后台开发方向编程题 (python实现)
2018-03-23 16:02
211 查看
第一题:字符串距离
题目:
给出两个相同长度的由字符
a和b构成的字符串,定义它们的距离为对应位置不同的字符的数量。如串”aab”与串”aba”的距离为2;串”ba”与串”aa”的距离为1;串”baa”和串”baa”的距离为0。下面给出两个字符串S与T,其中S的长度不小于T的长度。我们用|S|代表S的长度,|T|代表T的长度,那么在S中一共有|S|-|T|+1个与T长度相同的子串,现在你需要计算T串与这些|S|-|T|+1个子串的距离的和。
输入描述:
第一行包含一个字符串
S。第二行包含一个字符串T。S和T均由字符a和b组成,1 ≤ |T| ≤ |S| ≤105。
输出描述:
输出对应的答案。
样例:
in: aab aba out: 2
in: aaabb bab out: 5
#-*- coding:utf-8 -*- ''' 思路:字符串T在S下每次移动一次,进行比较 ''' class Lenth: def __init__(self,S,T): self.s=S self.t=T ''' len_s:字符串S长度 len_t:字符串T长度 num:存储最后结果 ''' def Fun(self): len_s=len(self.s) len_t=len(self.t) num=0 for i in range(len_s-len_t+1):#字符串移动次数 for k in range(0, len_t):#同等字符串比较 if self.s[i:len_t + i]==self.t: break if self.s[k+i] != self.t[k]: num+=1 return num S=raw_input() T=raw_input() print Lenth(S,T).Fun()
第二题:数字字符
题目:
在十进制表示中,任意一个正整数都可以用字符
‘0’-‘9’表示出来。但是当‘0’-‘9’这些字符每种字符的数量有限时,可能有些正整数就无法表示出来了。比如你有两个‘1’,一个‘2’,那么你能表示出11,12,121等等,但是无法表示出10,122,200等数。
现在你手上拥有一些字符,它们都是‘0’-‘9’的字符。你可以选出其中一些字符然后将它们组合成一个数字,那么你所无法组成的最小的正整数是多少?
输入描述:
第一行包含一个由字符
’0’-‘9’组成的字符串,表示你可以使用的字符。1 ≤ 字符串长度 ≤ 1000
输出描述:
输出你所无法组成的最小正整数。
样例:
in: 55 out: 1
in: 123456789 out: 10
#-*- coding:utf-8 -*- ''' 本题思路,将0和123456789分开考虑,本题结果只可能为:10~10....、1~11....、2~22...... ''' class Min_num: ''' input_list:输入的字符串 i:记录1~9在字符串中的一起出现的次数 ''' def __init__(self,input_list): self.input_list=input_list self.i=0 def min(self): ''' j:用于记录0出现在字符串的次数, while循环计算0出现的次数,同时提出字符串中的0 ''' j=0 while True: if 0 in self.input_list: self.input_list.remove(0) j+=1 else: break i_first=self.get_list() if j>=0 and self.i==0:#当输入的字符串中有0,但是1~9并不都存在 return i_first elif j>=0 and self.i>j:#当存在1~9的字符串的次数多余0的次数 return '1'+(j+1)*'0' elif j>=0 and self.i!=0:#当存在0的次数多余1~9的字符串的次数 return str(i_first)*(self.i+1) ''' get_list:用于计算1~9在输入字符串中同时出现的次数, 返回第一次不出现在字符串中的数,同时记录1~9出现的 次数 ''' def get_list(self): l=[1,2,3,4,5,6,7,8,9] for i in l: if i in self.input_list: self.input_list.remove(i) else: return i self.i+=1 return self.get_list()#递归循环 while True: s=raw_input() input_list=[] for i in s: input_list.append(int(i)) print Min_num(input_list).min()
相关文章推荐
- 美团点评2018春招后台开发方向编程题 - 题解
- Python进阶开发之网络编程,socket实现在线聊天机器人
- python——web后台开发实现网址生成二维码
- [置顶] python开发电影查询系统(一)—python实现后台数据
- [Python网络编程]浅析守护进程后台任务的设计与实现
- [Python网络编程]浅析守护进程后台任务的设计与实现
- JBuilder2005实现重构之升级到JDK5.0-Java基础-Java-编程开发
- 用Java实现FTP服务器解决方案-Java基础-Java-编程开发
- JBuilder2005实现重构之杂项重构-Java基础-Java-编程开发
- Eclipse中自动重构实现探索-Java基础-Java-编程开发
- java实现的18位身份证格式验证算法-Java基础-Java-编程开发
- 利用Java Swing 实现游戏开发-Java基础-Java-编程开发
- 用Java实现几种常见的排序算法-Java基础-Java-编程开发
- Java Web应用中如何实现任务有效调度-Java基础-Java-编程开发
- 用Java实现FTP服务器-Java基础-Java-编程开发
- MD5的Java Bean实现-Java基础-Java-编程开发
- 用AJAX J2EE实现一个网上会议室系统-Java基础-Java-编程开发
- Java实现类MSN、QQ好友上线通知界面-Java基础-Java-编程开发
- Taglib原理和实现:再论El和JSTL标签-Java基础-Java-编程开发
- 利用Java实现串口全双工通讯-Java基础-Java-编程开发