網易互娛筆試題 幸運N串

2021-09-26 02:50:55 字數 1110 閱讀 2345

題目描述:

連續n串被認為是幸運串,給乙個全部由大寫字母組成的字串,允許改變最多兩個大寫字母(也允許不改變或改變1個大寫字母),

是的字串中包含的最長的連續n串的長度最大。

輸入:t 表示有t組用例

每一行用例包含一行大寫字串s(0<|s|<50000,|s|為字串長度

輸出:每乙個測試用例,輸出乙個整數,表示操作後包含的最長連續n串的長度

比如:輸入

3nngn

nnnnggnnnn

ngnnnngnnnnnnnnsnnnn

輸出:4

1018

思路:

雙指標,滑動視窗,當視窗內非n小於2的時候,可以一直更新最大n串的長度,當非n串大於2時,滑動視窗左指標,直到非n串數目小於2,然後更新最大長度。

import sys

def count(line):

# 左邊界

l = 0

count_n = 0 #用來統計當前視窗內n的個數

res = 0

for r, char in enumerate(line):

if char == 'n':

count_n += 1

# 最多2個改變:r-l+1表示視窗大小,在視窗大小中如果非n的數目大於2,則滑動視窗左指標,直到視窗內的非n小於2

while r - l + 1 - count_n > 2:

if line[l] == 'n':

count_n -= 1

l += 1

res = max(res, r - l + 1)

return res

if __name__ == "__main__":

# 讀取第一行的n

n = int(sys.stdin.readline().strip())

ans =

for i in range(n):

# 讀取每一行

v = str(sys.stdin.readline().strip())

for i in ans:

print(i)

網易互娛筆試 電子時鐘

輸入描述 每個輸入資料報含多個測試點。每個測試點後有乙個空行。第一行為測試點的個數t t 100 每個測試點包含1行,為乙個字串 hh mm ss 表示鐘錶顯示的時間。輸出描述 對於每個測試點,輸出一行。如果鐘錶顯示的時間為真實存在的時間,則不做改動輸出該時間,否則輸出乙個新的 hh mm ss 表...

2017網易互娛筆試題 括號匹配

題目描述 對於一行 字串 裡面可能出現大括號 中括號 和小括號 請程式設計判斷改行 的括號巢狀是否正確。printf hello netease 等都是括號使用的正確方法,print hello netease 則是錯誤的範例。輸入描述 輸入包含一行,為一行包含括號的字串 字串長度不超過1000 輸...

網易互娛2020校招遊戲研發筆試題

第一題 判斷乙個數的二進位制是否為回文串 ac 方法一 存成陣列之後比較 include include include include using namespace std int t,x,cnt int num 111 int main int flag 1 for int i 0 i2 i ...