色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

算法面試真題:完美走位

算法與數據結構 ? 來源:吳師兄學算法 ? 2023-06-15 11:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

題目

在第一人稱射擊游戲中,玩家通過鍵盤的A、S、D、W四個按鍵控制游戲人物分別向左、向后、向右、向前進行移動,從而完成走位。

假設玩家每按動一次鍵盤,游戲人物會向某個方向移動一步,如果玩家在操作一定次數的鍵盤并且各個方向的步數相同時,此時游戲人物必定會回到原點,則稱此次走位為完美走位。

現給定玩家的走位(例如:ASDA),請通過更換其中一段連續走位的方式使得原走位能夠變成一個完美走位。其中待更換的連續走位可以是相同長度的任何走位。

請返回待更換的連續走位的最小可能長度。若果原走位本身是一個完美走位,則返回0。

輸入

輸入為由鍵盤字母表示的走位s,例如:ASDA

輸出

輸出為待更換的連續走位的最小可能長度

備注

走位長度1 ≤ s.length ≤ 10^5

s.length是4的倍數

s中只含有A,S,D,W四種字符

示例一

輸入

ASDW

輸出

0

說明

已經是完美走位了。

示例二

輸入

AASW

輸出

1

說明

需要把一個A更換成D,這樣可以得到ADSW或者DASW。

示例三

輸入

AAAA

輸出

3

說明

可以替換后3個A,得到ASDW。

示例四

輸入

AAAAADDD

輸出

4

解題思路

注意,本題和LC76. 最小覆蓋子串幾乎完全一致。重點在于如何將原問題轉化為覆蓋子串的問題。

題目有兩個重要條件:

完美走位字符串是指字符串中A、S、D、W四種字符出現次數相等的字符串

s.length是4的倍數

對于長度為len(s)的原字符串s來說,為了使其轉變為一個完美走位字符串,其中A、S、D、W四種字符出現次數應該均為num = len(s) // 4。

原字符串s中各個字符出現的次數可以用哈希表cnt_s = Counter(s)進行統計,對于出現次數多于num = len(s) // 4的字符ch,應該修改cnt_s[ch] - len(s) // 4個字符為其他出現次數少于num = len(s) // 4的字符,才能夠使得s變為一個完美走位字符串。

以示例四為例,s = "AAAAADDD",字符"A"出現的次數為5,字符"D"應該修改3,而num = len(s) // 4 = 2,需要修改3個"A"和1個"D"為剩余兩種字符,才能使得s變為完美走位字符串。故我們需要找到包含3個"A"和1個"D"的最小子串。

因此這個問題就轉變為了,找到覆蓋cnt_s[ch] - len(s) // 4個的字符ch(ch滿足條件cnt_s[ch] > len(s) // 4)的最短子串。需要覆蓋的子串中所出現的字符以及次數,可以用另一個哈希表cnt_sub儲存。

那么這個問題就和LC76. 最小覆蓋子串完全一致了。上述邏輯整理為代碼即

num=len(s)//4
cnt_s=Counter(s)
cnt_sub={k:v-numfork,vincnt_s.items()ifv>num}

代碼

#題目:2023Q1A-完美走位
#分值:100
#作者:許老師&&吳師兄學算法
#算法:不定滑窗
#代碼看不懂的地方,請直接在群上提問


fromcollectionsimportCounter
frommathimportinf


#定義輔助函數check()
#用于檢查cnt_sub中的各個字符是否出現在cnt_win中,
#且cnt_win中的個數大于等于cnt_sub
defcheck(cnt_win,cnt_sub):
returnall(cnt_win[k]>=cnt_sub[k]forkincnt_sub)


s=input()
num=len(s)//4
#獲得原字符串中所有字符的出現次數
cnt_s=Counter(s)
#獲得需要覆蓋的子串的字符以及出現次數
cnt_sub={k:v-numfork,vincnt_s.items()ifv>num}

#如果cnt_sub長度為0,說明每一種字符出現次數相等
#s已經是一個完美走位字符串,輸出0
iflen(cnt_sub)==0:
print(0)
#否則要進行類似LC76.最小覆蓋子串的不定滑窗過程
else:
#初始化滑窗對應的哈希表、最小覆蓋的窗口長度
cnt_win=Counter()
ans=inf
left=0

forright,chinenumerate(s):
# Q1:對于每一個右指針right所指的元素ch,做什么操作?
# A1:將其加入哈希表cnt_win的計數中
cnt_win[ch]+=1
# Q2:什么時候要令左指針left右移?在什么條件下left停止右移?【循環不變量】
# A2:check(cnt_win, cnt_sub)為True,left可以右移以縮小窗口長度
whilecheck(cnt_win,cnt_sub):
# Q3:什么時候進行ans的更新?
# A3:check(cnt_win, cnt_sub)為True
ans=min(ans,right-left+1)
cnt_win[s[left]]-=1
left+=1

print(ans)

時空復雜度

時間復雜度:O(N)。僅需一次遍歷整個字符串s。

空間復雜度:O(1)。只有4種字符,哈希表所占用空間為常數級別空間。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4712

    瀏覽量

    95492
  • 鍵盤
    +關注

    關注

    4

    文章

    866

    瀏覽量

    40738
  • 字符
    +關注

    關注

    0

    文章

    237

    瀏覽量

    25614
  • 函數
    +關注

    關注

    3

    文章

    4381

    瀏覽量

    64979

原文標題:算法面試真題:完美走位

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【硬件方向】名企面試筆試:大疆創新校園招聘筆試題

    名企面試筆試:大疆創新校園招聘筆試題-硬件 是幾年前的題目,不過值得參考一下哦 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內容有幫助可以關注、點贊、評論支持一下哦~)
    發表于 05-16 17:31

    視頻教程:Java七大外企經典面試套路之基礎篇

    多年來名企在各地的Java筆試面試經驗,需要的朋友可以看看,作為參考!課程目錄:第1節 String Stringbuffer Stringbuilder 深度解析第2節 完美
    發表于 06-14 15:47

    免費視頻教程:java經典面試題深度解析

    簡介:精選多年來名企在各地的Java筆試面試經驗課程目錄:第一節 String Stringbuffer Stringbuilder 深度解析第二節 完美回答
    發表于 06-15 15:13

    java經典面試題深度解析

    教程,需要的朋友可以看看,作為參考!課程簡介:精選多年來名企在各地的Java筆試面試經驗課程目錄:第一節 String Stringbuffer Stringbuilder 深度解析第二節
    發表于 06-20 15:16

    硬件經典面試100 (附答案)

    學電人員必備;硬件經典面試100;面向電子行業的面試基礎問題,提前進入職業的大門
    發表于 10-12 14:28

    藍橋杯省賽賽代碼總結

    藍橋杯省賽賽代碼總結,親測有效!
    發表于 07-25 09:10

    大疆創新校園招聘筆試題-硬件

    名企面試筆試:大疆創新校園招聘筆試題-硬件,有需要的可以下載參考
    發表于 04-29 15:05

    硬件經典面試100分享

    學電人員必備;硬件經典面試100;面向電子行業的面試基礎問題,提前進入職業的大門
    發表于 09-27 06:23

    程序員面試寶典下載(pdf電子書)

    程序員面試寶典取材于各大IT公司歷年面試(筆試、口試、電話面試、英語面試,以及邏輯
    發表于 09-19 17:14 ?1818次下載
    程序員<b class='flag-5'>面試</b>寶典下載(pdf電子書)

    2011注電(供配電)基礎(上午)

    2011注電(供配電)基礎(上午)2011注電(供配電)基礎(上午)2011注電(供配電)基礎
    發表于 02-19 15:34 ?4次下載

    華為HCIE RS面試集錦

    華為HCIE RS面試集錦,華為認證必須
    發表于 05-11 11:16 ?0次下載

    微軟面試100系列

    微軟面試100系列
    發表于 01-08 14:14 ?0次下載

    Linux面試3道

    關鍵詞:linux、面試 第一:下面的網絡協議中,面向連接的的協議是( ) A 傳輸控制協議 B 用戶數據報協議 C 網際協議 D 網際控制報文協議 第二:. Linux文件權限一共10
    發表于 09-23 11:03 ?605次閱讀

    算法類型以及準備策略

    今天就和大家聊聊大公司的面試環節經常涉及的算法類型以及準備策略。 問題難度首先大家比較關心的就是面試時候出現的算法
    的頭像 發表于 09-02 10:50 ?1723次閱讀

    新疆大學信號與系統2002年

    新疆大學823信號與系統2002年-樣板
    發表于 04-29 15:26 ?0次下載
    主站蜘蛛池模板: 色综合久久天天影视网 | 欧美精品一区二区在线电影 | 999资源站| 亚洲乱色视频在线观看 | 午夜神器老司机高清无码 | 麻豆精品国产剧情观看 | 亚洲精品色情婷婷在线播放 | 无码乱人伦一区二区亚洲一 | 亚洲中文久久久久久国产精品 | 亚洲精品久久久午夜麻豆 | 狼与美女谐音歌词 | 免费完整版观看 | 国产成人精品s8p视频 | 日韩高清一区二区三区不卡 | 久久影院毛片一区二区 | 手机在线免费 | 国产自产视频在线观看香蕉 | 国产精品www视频免费看 | 空姐内射出白浆10p 空姐厕所啪啪啪 | 天天日免费观看视频一1 | 日韩一卡二卡三卡四卡免费观在线 | 破苞流血哭泣 magnet | 夜夜澡人人爽人人喊_欧美 夜夜骑夜夜欢 | 丰满五十老女人性视频 | 国产精品成人无码免费视频 | 亚洲国产综合久久久无码色伦 | 神马电影院午夜神福利在线观看 | 无人区国产片 | 白百合在线观看 | 亚州三级久久电影 | 99re8久久热在线视频 | 小小水蜜桃3视频在线观看 小向美奈子厨房magnet | 亚洲欧美日本国产在线观18 | 日日碰狠狠躁久久躁综合网 | 乌克兰16~18sex| 99视频久久精品久久 | 69精品人妻一区二区三区蜜桃 | 2022国产91精品久久久久久 | 曰韩一本道高清无码av | 捆绑调教网站 | 亚洲AV噜噜88 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品