今天做newcode的‘直方图内最大矩形’的问题,坑爹了字符串操作折腾了好久,特地来总结下。题目为(http://www.nowcoder.com/practice/13ba51c3fec74b58bbc8fa8c3eedf877?tpId=49&tqId=29284&rp=1&ru=/ta/2016test&qru=/ta/2016test/question-ranking)
先把代码贴上来,本机Python3.4跑的结果没问题,newcoder是Python2.7的,报错,还没解决:%d format: a number is required, not NoneType
#
-*- coding:utf-8 -*-
class
MaxInnerRec:
def
countArea(self, A, n):
#
write code here
l = []
for ii in range(n - 1, 0, -1):
for jj in range(0, ii):
if A[jj] > A[jj + 1]:
# tmp = A[jj]# A[jj] = A[jj + 1]# A[jj + 1] = A[jj]
A[jj],A[jj + 1] = A[jj + 1],A[jj]
print (A) #排序完成后for i in range(n):
l.append(A[i] * (n - i)) #计算面积for ii in range(n):
if l[0] < l[ii]:
l[0], l[ii] = l[ii], l[0]
print(l) #对面积排序print(l[0])
if__name__ == "__main__":
A = []
ss = input()
aa = ss.replace(‘[‘,‘‘)
aa = aa.replace(‘]‘,‘‘)
aa = aa.split(‘,‘)
n = int(aa[-1])
for i in range(int(aa[-1])):
A.append(int(aa[i]))
print(A)
# A = [2,7,9,4,1]# n = 5
ch = MaxInnerRec()
ch.countArea(A,n)
正文:字符串操作
replace:字符串替代
ss = [2,7,9,4,1] aa = ss.replace(‘[‘,‘‘) #ss字符串中所有的‘[‘用‘ ‘空格代替 aa = 2,7,9,4,1]
split:字符串分割
A = ‘2,7,9,4,1’ #A为一个字符串 aa = aa.split(‘,‘) #用,分割A,使A成为一个string类型的list
split有多个分割符时,就要用到正则表达式了:
import
re
s1 = [8,4,6,2,5,9,1],7
s2=re.split(r‘[[s],]+‘,s1) #去掉[、空格、],+表示多个符号print (s2)
[‘‘, ‘8‘, ‘4‘, ‘6‘, ‘2‘, ‘5‘, ‘9‘, ‘1‘, ‘7‘] #为什么前面有个空格,去不掉
join:字符串连接
a = [‘a‘,‘b‘,‘c‘,‘d‘] #a[1]=‘a‘,a[-1]=‘d‘ content = ‘‘.join(a) print content abcd
下次再添加。。
原文:http://www.cnblogs.com/hanggegege/p/5774141.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!