python编程100例头条-今日头条python面试题之编程篇
最大映射
有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9
的数字,不同字符映射为不同的数字。这样每个字符串就可以看做一个整数,唯一的要求是这些整数必须是正整数且它们的字符串不能有前导零。现在问你怎样映射字符才能使得这些字符串表示的整数之和最大?
输入描述:每组测试用例仅包含一组数据,每组数据第一行为一个正整数 n , 接下来有 n 行,每行一个长度不超过 12 且仅包含大写字母 A-J 的字符串。 n 不大于 50,且至少存在一个字符不是任何字符串的首字母。
输出描述:输出一个数,表示最大和是多少。
输入例子:
2
ABC
BCA
输出例子:
1875
答案:
# -*- coding:utf-8 -*-
"""
最大映射
"""
def get_nums(all_words, all_set):
for index,word in enumerate(all_words[::-1]):
if word not in all_set:
return word
def test():
n = 1
all_num = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
all_set = set()
all_dict = dict()
nums = int(input())
while 1 <= nums <= 50 and n <= nums:
i_string = input()
string_length = len(i_string)
all_set.add(i_string[0])
for index,word in enumerate(i_string[:12]):
weights = all_dict.get(word, 0)
new_weights = pow(10, string_length-index-1)
now_weights = weights + new_weights
all_dict.update({word:now_weights})
n += 1
result = 0
sorted_list = sorted(all_dict.items(),key = lambda x:x[1],reverse = True)
all_words = [i[0] for i in sorted_list]
if all_words[-1] in all_set and len(sorted_list) == 10:
words = get_nums(all_words, all_set)
all_words.remove(words)
all_words.append(words)
for index,w in enumerate(all_words):
result += all_dict.get(w) * all_num[index]
print (result)
if __name__ == '__main__':
test()
木棒拼图
有一个由很多木棒构成的集合,每个木棒有对应的长度,请问能否用集合中的这些木棒以某个顺序首尾相连构成一个面积大于 0 的简单多边形且所有木棒都要用上,简单多边形即不会自交的多边形。
初始集合是空的,有两种操作,要么给集合添加一个长度为 L 的木棒,要么删去集合中已经有的某个木棒。每次操作结束后你都需要告知是否能用集合中的这些木棒构成一个简单多边形。
输入描述:
每组测试用例仅包含一组数据,每组数据第一行为一个正整数 n 表示操作的数量(1 ≤ n ≤ 50000) , 接下来有n行,每行第一个整数为操作类型 i (i ∈ {1,2}),第二个整数为一个长度 L(1 ≤ L ≤ 1,000,000,000)。如果 i=1 代表在集合内插入一个长度为 L 的木棒,如果 i=2 代表删去在集合内的一根长度为 L 的木棒。输入数据保证删除时集合中必定存在长度为 L 的木棒,且任意操作后集合都是非空的。
输出描述:
对于每一次操作结束有一次输出,如果集合内的木棒可以构成简单多边形,输出 “Yes” ,否则输出 “No”。
输入例子:
5
1 1
1 1
1 1
2 1
1 2
输出例子:
No
No
Yes
No
No
答案:
n = int(raw_input())
stickL = []
#stickMax = 0
stickSum = 0
for i in range(n):
s = raw_input().split()
s[1] = int(s[1])
if s[0] == '1':
stickSum += s[1]
stickL.append(s[1])
else:
stickSum -= s[1]
stickL.remove(s[1])
stickL.sort(reverse=True)
if stickL[0] < stickSum/2.:
print('Yes')
else:
print('No')
魔法权值
给出 n 个字符串,对于每个 n 个排列 p,按排列给出的顺序(p[0] , p[1] … p[n-1])依次连接这 n 个字符串都能得到一个长度为这些字符串长度之和的字符串。所以按照这个方法一共可以生成 n! 个字符串。
一个字符串的权值等于把这个字符串循环左移 i 次后得到的字符串仍和原字符串全等的数量,i 的取值为 [1 , 字符串长度]。求这些字符串最后生成的 n! 个字符串中权值为 K 的有多少个。
注:定义把一个串循环左移 1 次等价于把这个串的第一个字符移动到最后一个字符的后面。
输入描述:
每组测试用例仅包含一组数据,每组数据第一行为两个正整数 n, K , n 的大小不超过 8 , K 不超过 200。接下来有 n 行,每行一个长度不超过 20 且仅包含大写字母的字符串。
输出描述:
输出一个整数代表权值为 K 的字符串数量。
输入例子:
3 2
AB
RAAB
RA
输出例子:
3
答案:
# -*- coding: utf-8 -*-
import itertools
def test(s,i):
strl = s[:i]
strr = s[i:]
newstr = strr + strl
if cmp(s,newstr)==0:
return True
lis = raw_input().split()
n=int(lis[0])
k=int(lis[1])
i = 0
mystring = []
strlen = 0
while(i
ms = raw_input()
strlen += len(ms)
mystring += [ms]
i+=1
mybei = [x for x in range(1,strlen+1) if strlen % x == 0]
coutk = 0
newlist = range(n)
strlist = list(itertools.permutations(newlist,n))
imin = strlen / k
for x in strlist :
if strlen % k != 0:break
s = ''
for y in x:
s+= mystring[y]
for i in mybei:
if i > imin :break
if test(s,i):
if i < imin:
break
if i == imin:
coutk +=1
break
print(coutk)
给定 x, k ,求满足 x + y = x | y 的第 k 小的正整数 y 。 | 是二进制的或(or)运算,例如 3 | 5 = 7。
比如当 x=5,k=1时返回 2,因为5+1=6 不等于 5|1=5,而 5+2=7 等于 5 | 2 = 7。
输入描述:
每组测试用例仅包含一组数据,每组数据为两个正整数 x , k。 满足 0 < x , k ≤ 2,000,000,000。
输出描述:
输出一个数y。
输入例子:
5 1
输出例子:
2
或与加
给定 x, k ,求满足 x + y = x | y 的第 k 小的正整数 y 。 | 是二进制的或(or)运算,例如 3 | 5 = 7。
比如当 x=5,k=1时返回 2,因为5+1=6 不等于 5|1=5,而 5+2=7 等于 5 | 2 = 7。
输入描述:
每组测试用例仅包含一组数据,每组数据为两个正整数 x , k。 满足 0 < x , k ≤ 2,000,000,000。
输出描述:
输出一个数y。
输入例子:
5 1
输出例子:
2
答案:
# -*- coding: utf-8 -*-
if __name__ == "__main__":
total = []
x, k = raw_input().split(' ')
k = int(k)
x = int(x)
bit_num = 1
res = 0
while k:
if x & bit_num == 0:
res += bit_num * (k & 1)
k = k>>1
bit_num = bit_num << 1
print(res)
python编程100例头条-今日头条python面试题之编程篇相关推荐
- python爬虫编程100例_哪种Python程序员最赚钱?爬虫数据告诉你!
世界上有三种宝贵的东西: 知识.粮食和友谊. 那么,1 块钱,你能买到什么呢? 骑一次共享单车 买 2 包辣条 1/190 件格子衬衫 1/299 支口红 1/10099 个 iPhone XS 但是 ...
- python编程100例海绵宝宝-宝宝的python
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 前言:大家跟我一起念:python大法好,跟着本宝宝用python抢火车 ...
- 《Python爬虫100例》复盘⑦,解决手机APP爬虫环境问题
文章目录 案例 41:Fiddler+夜神模拟器 案例 42:爬取儿歌多多APP数据 案例 43:百思不得姐APP数据 案例 44:Charles安装与使用 案例 45:Charles抓取兔儿故事 案 ...
- python趣味编程10例-python趣味编程100例(99个)
[实例简介] python如今很流行,AI的首选工具:python趣味编程100例(99个),学习编程不枯燥. [实例截图] [核心代码] python趣味编程100例(99个) └── python ...
- python精彩编程200例-python趣味编程100例(99个)
[实例简介] python如今很流行,AI的首选工具:python趣味编程100例(99个),学习编程不枯燥. [实例截图] [核心代码] python趣味编程100例(99个) └── python ...
- python趣味编程与精彩实例-python趣味编程100例(99个)
[实例简介] python如今很流行,AI的首选工具:python趣味编程100例(99个),学习编程不枯燥. [实例截图] [核心代码] python趣味编程100例(99个) └── python ...
- Python音乐跳舞毯(基于海龟画图创作的作品,来自Python创意编程100例sprites篇_Python精灵模块)
出色的配音是本作品的一大亮点哦! 相信这竟然是Python用海龟画图制作的作品吗? sprites模块就是用python的turtle模块制作的!所以本作品仍属于Python海龟画图作品 " ...
- Python创意编程100例turtle篇题目串烧
海龟变身孙悟空,迷宫寻宝讲相声! 哪吒妙用孙子兵法,世界名人尽赞之.忍者品德好,遇见合金弹头主角时怦然心动了,赠送了他花框音乐盒. 生机勃勃的农场孕育了漂亮的二叉分形树.超级玛丽玩起坦克大战还邀请解& ...
- Python奥特曼打怪兽射击游戏(基于海龟画图创作的作品,来自Python创意编程100例sprites篇_Python精灵模块)
相信这竟然是Python用海龟画图制作的作品吗? sprites模块就是用python的turtle模块开发的!所以本作品仍属于Python海龟画图作品 """奥特曼打怪 ...
- python趣味编程示例_python趣味编程100例(99个)
[实例简介] python如今很流行,AI的首选工具:python趣味编程100例(99个),学习编程不枯燥. [实例截图] [核心代码] python趣味编程100例(99个) └── python ...
最新文章
- UVALive2678:Subsequence
- 修改html字体大小
- 简明深度学习方法概述 Deep Learning:Methods and Application
- 常考数据结构与算法:平衡二叉树
- 【Git】Git教程
- springAop和AspectJ的关系
- 假如把支付宝存储服务器炸了,里面的钱还在么?
- maven使用openjdk_openjdk8指定版本安装(maven指定版本安装)
- LabVIEW升级图像识别功能
- 机器人开发--技术路线简介
- H264封装为FLV
- 内网使用Maven本地仓库环境
- FPGA基本设计流程
- 远程桌面计算机用户名,远程桌面设置及使用
- Hexo-Theme-Sakura 实践记录
- 【软考-中级】系统集成项目管理工程师-【1信息化知识】
- 关于antd Tree组件修改图标
- 做内网穿透外网远程访问群晖NAS 2-2
- 【Cxinny】Koa
- python计算机视觉- 相机模型与参数标定