Python真題案例之錯位鍵盤?單詞長度?字母重排詳解
前言
前面一篇分享了關(guān)于數(shù)值的一些處理方式,本篇呢進行一下字符串處理的分享 題目也是超級簡單,記錄一下對字符串處理的方式
錯位鍵盤??(也就是錯位字符串,使用錯位的字符去匹配原字符)
單詞的長度??(字符串的分割)
字母重排??(子串與主串的匹配,感覺這個匹配方式不錯)
Tex括號問題(超級簡單,下面見) 下面就步入正題開始我們今天的內(nèi)容啦????
一、錯位鍵盤??
??問題描述
在我們打字的時候,往往會因為手誤將A敲成S,將S敲成D
現(xiàn)在有一位程序員由于手誤輸入了一行字符串 請憑借你聰明的大腦將其還原 (鍵盤上的字符順序:"`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./")
樣例輸入:
O S, GOMR YPFSU/
樣例輸出:
I AM FINE TODAY
??問題分析
這類的問題有事后想到的就是進行字符的替換,但是一個鍵盤上字符那么多逐個替換的話非常的費時費力于是我們可以進行一個下標數(shù)組的編排,用于記錄字符在字符串中的位置,而為了不必要的轉(zhuǎn)換我們不妨將下標數(shù)組開辟到255個這樣每一種字符的ASCII值就可以直接作為下標數(shù)組的下標拿到他在原來字符串的索引。
然后根據(jù)輸入可以知道,輸入的有空格,給定的鍵盤內(nèi)沒有空格,所以需要進行分詞處理。在Python中分詞有極為簡便的方法,在C語言中可以開辟一個字符型指針數(shù)組,用于存儲每一段單詞,處理方式與單詞的平均長度無異??梢韵韧驴纯?。分完詞之后可以迭字符型指針數(shù)組。然后按序列輸出。輸出的時候先拿字符做下標取原字符串中的索引,然后再拿索引-1去原字符中取字符。注意輸出時候的格式。
??代碼實現(xiàn)
老規(guī)矩先上運行結(jié)果:
代碼如下:
import sys s=sys.stdin.readline().strip().split() indexarr=[0]*255 # 將所有數(shù)據(jù)存放進一個數(shù)組,將鍵盤上相鄰的兩個字母在數(shù)組中以索引的形式相連 mystr="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./" # 將每一位字母的索引存儲起來。供以后遍歷輸入的數(shù)據(jù)使用 for i in range(len(mystr)): indexarr[ord(mystr[i])]=i flag=True #遍歷輸入的n段字符串 for line in s: if flag: flag=False for i in line: print(mystr[indexarr[ord(i)]-1],end="") else: print(" ",end="") for i in line: print(mystr[indexarr[ord(i)]-1],end="")
二、單詞的平均長度??
這一題使用Python做超級簡單
使用c語言做的話先進行空格統(tǒng)計,如果空格后面不為空格就進行單詞數(shù)加1
如果空格后面依舊是空格向下遍歷,如果一個位置不為空格就進行字母數(shù)加1
最終要將單詞數(shù)額外加1,因為首尾單詞循環(huán)的時候只統(tǒng)計進去了一個。
??問題描述
輸入若干個單詞,單詞只包含字母,每個單詞由一個或多個空格組成
輸出單詞的平均長度
樣例輸入:
qwe qwe qwe
樣例輸出:
3.0
??問題分析
對字符串進行分詞,然后求每一個字串的長度,再將長度和除以單詞的個數(shù)
??代碼實現(xiàn)
老規(guī)矩先上運行結(jié)果:
代碼如下:
import sys num=0 n=0 # 這里使用strip()去除輸入的末尾換行符 # 使用split()進行字符串分段最后得到的是一個列表形式 mystr=sys.stdin.readline().strip().split() for i in mystr: num+=len(i) n+=1 print(num/n)
三、字母重排??
??問題描述
輸入一個字典(*****結(jié)尾),然后再輸入若干單詞。每輸入一個單詞w,你都需要 在字典中找出所有可以用w的字母重排后得到的單詞,并按照字典序從小到大的順序在一 行中輸出(如果不存在,輸出:0。輸入單詞之間用空格或空行隔開,且所有輸入單詞都由 不超過6個小寫字母組成。注意,字典中的單詞不一定按字典序排列。
樣例輸入:
第一行 tarp given score refund only trap work earn course pepper part
第二行 resco nfudre aptr sett oresuc
樣例輸出:
course part refund score tarp trap
??問題分析
給出一個字典,所以我們在進行查找的時候可以先將字典進行處理,然后依照字典的標準進行查詞
這里我們可以先對字典進行排序得到首字母有序的字典,然后對字典中每一個元素進行排序。 對要查詢的子串進行排序,然后遍歷有序字典進行查找,找到直接輸出(也就是說將標準的字典按 一定的方式處理,然后將所要查的詞經(jīng)過相同的轉(zhuǎn)換后與字典進行比對)
??代碼實現(xiàn)
老規(guī)矩先上運行結(jié)果:
代碼如下:
import sys # 元字典序字符串 mydic=list(sys.stdin.readline().strip().split()) mydic=sorted(mydic) words=sys.stdin.readline().strip().split() # 排序后的字符串 newdic=[] newwords=[] for i in mydic: # 字符串不可以直接排序,先轉(zhuǎn)換成字典,然后進行排序 newdic.append("".join(sorted(i))) for i in words: newwords.append("".join(sorted(i))) flag=False i=0 while i<len(newdic): if newdic[i] in newwords: if not flag: print(mydic[i],end="") flag=True else: print(" ",mydic[i],end="") i+=1 if not flag: print(0)
四、Tex括號問題??
??問題描述
有一篇文章,在撰稿的時候,沒有按照指定格式編排,現(xiàn)在需要將包含’’ 的標點符號轉(zhuǎn)換成為 只有中文雙引號的文章“”
樣例輸入:
"anksdn,'dasd,“hhihi”
樣例輸出:
“anksdn,”dasd,“hhihi”
??問題分析
這里與前面提到的燈光模擬非常的類似,只需要記性標記位的整頓就好
可以設(shè)計一個標記flag,當flag為True時遇見"進行左引號“的輸出然后
立即將標記變?yōu)榕c其相反的值當flag為false時遇見"立即進行右引號輸出。
然后將flag標記為True
??代碼實現(xiàn)
老規(guī)矩先上運行結(jié)果:
代碼如下:
import sys s=sys.stdin.readline().strip() flag=True for i in s: if i=="'" or i=="\"": if flag: print("“",end="") else: print("”",end="") flag=not flag continue print(i,end="")
??•??•??
???? ? ???? ??????
到此這篇關(guān)于Python真題案例之錯位鍵盤 單詞長度 字母重排詳解的文章就介紹到這了,更多相關(guān)Python 錯位鍵盤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用python GDAL庫讀寫geotiff格式的遙感影像方法
今天小編就為大家分享一篇利用python GDAL庫讀寫geotiff格式的遙感影像方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11python中strip(),lstrip(),rstrip()函數(shù)的使用講解
這篇文章主要介紹了python中strip(),lstrip(),rstrip()函數(shù)的使用講解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11詳解python os.path.exists判斷文件或文件夾是否存在
這篇文章主要介紹了詳解python os.path.exists判斷文件或文件夾是否存在,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11