洛谷P1098——Python做法,字符串分割,大小写转换,ascall码,倒序处理,列表转化字符串,字符串拼接

题目:

洛谷P1098

NOIP 2007 提高第二题

涉及到的一些字符串知识点:

字符串分割:split()

ascall码字符转换:ord()  chr()

大小写转换:lower()  upper()

倒序处理: 步长-1 : [::-1]

列表转化为字符串:"".join(list) 即列表各元素以""为间隔拼接

p1, p2, p3 = [int(x) for x in input().split()]  # 输入str->int
string = input().split("-")    # 以-为分隔符,分割,注意:"---" "-123"这种->"'','',''", "'','123'"

for i in range(len(string)-1) :
	if string[i] == "" or string[i+1] == "":   # 若该-左或右无字母或数字
		filler = "-"
	else:
		a = string[i][-1]   # 左边字符串最后一个字符 和 右边第一个
		b = string[i+1][0]
		if ord(a)+1 < ord(b) :  # ascall是否符合
			o1 = ord(a)
			o2 = ord(b)
			filler = ""
			if (97<=o1<=122 and 97<=o2<=122) or (48<=o1<=57 and 48<=o2<=57):   # 是否左右同时为小写字母或数字
				if p1 == 1:
					for j in range(o1+1, o2):
						filler += chr(j).lower()*p2   # 字符串拼接、大小写转换
				elif p1 == 2:
					for j in range(o1+1, o2):
						filler += chr(j).upper()*p2
				elif p1 == 3:
					filler += (o2-o1-1) * p2 * "*"

				if p3 == 2:
					filler = filler[::-1]   # 步长为-1,即倒序
			else:
				filler = "-"
		elif ord(a)+1 == ord(b):
			filler = ""
		else:
			filler = "-"
	string[i] += filler

ans = "".join(string)    # 列表->字符串
print(ans)

 

上一篇:字符串操作,英文词频统计预处理


下一篇:50个BA分析工具第十七个-Brainstrorming