涛涛最近要负责图书馆的管理⼯作,需要记录下每天读者的到访情况。
每位读者有⼀个唯⼀编号,每条记录⽤读者的编号来表示。
给出读者的来访记录,请问每⼀条记录中的读者是第⼏次出现。
输⼊的第⼀⾏包含⼀个整数 ,表示涛涛的记录条数。
第⼆⾏包含 个整数,依次表示涛涛的记录中每位读者的编号。
输出⼀⾏,包含 个整数,由空格分隔,依次表示每条记录中的读者编号是第⼏次出现。 ,
读者的编号为不超过 的正整数。
5
1 2 1 1 3
1 1 2 3 1
def stream(n,inp):
return [inp[0:i+1].count(c) for i,c in enumerate(inp) if c != " "]
n,inp = 5,"1 2 1 1 3" #1 1 2 3 1
print(stream(n,inp))
测试用例:
给出 3 个字符串:
`baba`
`aba`
`cba` 的最长公共字符串后缀是 `ba`
import sys
def find_longest_common_suffix(str_list):
if not str_list:
return ""
min_len = min(len(s) for s in str_list)
max_suffix_len = 0
for i in range(min_len):
current_char = str_list[0][-(i+1)]
for s in str_list[1:]:
if s[-(i+1)] != current_char:
return str_list[0][-max_suffix_len:] if max_suffix_len else ""
max_suffix_len += 1
return str_list[0][-max_suffix_len:] if max_suffix_len else ""
def main():
lines = [line.strip() for line in sys.stdin if line.strip()]
ptr = 0
while ptr < len(lines):
n = int(lines[ptr])
ptr += 1
if n == 0:
break
str_list = []
for _ in range(n):
str_list.append(lines[ptr])
ptr += 1
print(find_longest_common_suffix(str_list))
if __name__ == "__main__":
main()
def Longest_Common_Suffix(ls):
# 切片 [:-1]
i,ans = 0,""
suffix_len = min(map(len,(ls)))
while i < suffix_len:
s = [c[-i:] for c in ls]
print(s)
if len(set(s)) == 1:
i += 1
ans = s[-1]
else:return s
else:return s
ls = ['baba','aba','cba']
ls = ['aa','cc']
print(Longest_Common_Suffix(ls))
def create_spiral_matrix(n, m):
if n == 0 or m == 0:
return ""
matrix = [[0 for _ in range(m)] for _ in range(n)]
top, bottom, left, right = 0, n-1, 0, m-1
num, total = 1, n * m
while num <= total:
# 从左到右
remaining = total - num + 1
if remaining <= 0:
break
fill = min(right - left + 1, remaining)
for j in range(left, left + fill):
matrix[top][j] = num
num += 1
top += 1
if num > total:
break
# 从上到下
remaining = total - num + 1
if remaining <= 0:
break
fill = min(bottom - top + 1, remaining)
for i in range(top, top + fill):
matrix[i][right] = num
num += 1
right -= 1
if num > total:
break
# 从右到左
remaining = total - num + 1
if remaining <= 0:
break
fill = min(right - left + 1, remaining)
for j in range(right, right - fill, -1):
matrix[bottom][j] = num
num += 1
bottom -= 1
if num > total:
break
# 从下到上
remaining = total - num + 1
if remaining <= 0:
break
fill = min(bottom - top + 1, remaining)
for i in range(bottom, bottom - fill, -1):
matrix[i][left] = num
num += 1
left += 1
# 高效拼接结果字符串
rows = [" ".join(map(str, row)) for row in matrix]
return "\n".join(rows)
# 示例测试
print(create_spiral_matrix(3, 3))