又到一年好幾度的招聘季,實驗室師兄們紛紛開始筆試。老鼠屎幫師兄們答題一點心得整理如下。
題目一:字符串加密
時間限制:C/C++1秒,其他語言2秒
空間限制:C/C++32768K,其他語言65536K
64bit IO Format:%lld
題目描述:
給定一個字符串,將該字符串加密輸出
輸入描述:
一個字符串
輸出描述:
將該字符串加密輸出,加密算法如下:
將每個字符轉爲二進制數字,然後將這些二進制數字分別逆序後再拼接,得到加密字符串
示例1
輸入
ab
輸出
10000110100011
說明
轉換爲二進制數字:a轉爲1100001,b轉爲1100010,逆序後拼接得到10000110100011
話不多說先貼代碼,語言爲python。
s=input('')
new_dat=''
for c in s:
dat=bin(ord(c)).replace('0b', '')
new_dat=new_dat+dat[::-1]
print(new_dat)
Notes:
- ord()函數是chr()函數(對於8位的ASCII字符串)或unichr()函數(對於Unicode對象)的配對函數,它以一個字符(長度爲1的字符串)作爲參數,返回對應的ASCII數值。
- bin()函數將整型轉換爲二進制數組成的字符串,轉換後的最高位非零(如bin(1)=‘0b1’,而非‘0b01’),並在前面加上0b,表示這是一個二進制括號中需要是一個整型,或者括號中返回一個整型。
- 最後用dat[::-1]做逆序。
感想:
其實感覺題目的初衷是想讓答題者深入底層寫字符串二進制轉換以及逆序拼接的,然而能力有限最終選擇了醬紫投機取巧的方式。待有招一日想明白再從出題者意圖寫一版答案吧~