如下內容包含筆試練習庫的題目和代碼,題目來自牛客網,僅供參考。算法
# coding = utf-8 import sys def test1(): """ 題目描述:計算字符串最後一個單詞的長度,單詞以空格隔開。 輸入描述:一行字符串,非空,長度小於5000。 輸出描述:整數N,最後一個單詞的長度。 示例1 輸入 hello world 輸出 5 ''' :return: None """ str=sys.stdin.readline() lis = str.split() print(len(lis[-1])) def test2(): ''' 題目描述寫出一個程序,接受一個由字母和數字組成的字符串,和一個字符,而後輸出輸入字符串中含有該字符的個數。不區分大小寫。 輸入描述:輸入一個有字母和數字以及空格組成的字符串,和一個字符。 輸出描述:輸出輸入字符串中含有該字符的個數。 示例1 輸入 ABCDEF A 輸出 1 ''' str1 = input().lower() str2 = input().lower() print(str1.count(str2)) def test3(): """ 題目描述:明明想在學校中請一些同窗一塊兒作一項問卷調查,爲了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤1000),對於其中重複的數字,只保留一個,把其他相同的數去掉,不一樣的數對應着不一樣的學生的學號。而後再把這些數從小到大排序,按照排好的順序去找同窗作調查。請你協助明明完成「去重」與「排序」的工做(同一個測試用例裏可能會有多組數據,但願你們能正確處理)。 Input Param n 輸入隨機數的個數 inputArray n個隨機整數組成的數組 Return Value OutputArray 輸出處理後的隨機整數 注:測試用例保證輸入參數的正確性,答題者無需驗證。測試用例不止一組。 輸入描述:輸入多行,先輸入隨機整數的個數,再輸入相應個數的整數 輸出描述:返回多行,處理後的結果 示例1 輸入 11 10 20 40 32 67 40 20 89 300 400 15 輸出 10 15 20 32 40 67 89 300 400 :return: None """ # count = int(input()) # lis = [] # for i in range(count): # tmp = int(input()) # lis.append(tmp) # lis = list(set(lis)) # lis.sort() # for tmp in lis: # print(tmp) # while True: try: num = [] n = int(input()) for i in range(n): tmp = int(input()) if tmp not in num: num.append(tmp) num.sort() for i in num: print(i) except: break # import sys # while True: # try: # numbers = [] # n = int(sys.stdin.readline().strip()) # for i in range(n): # numbers.append(int(sys.stdin.readline().strip())) # numbers.sort() # temp = [] # for i in numbers: # if i not in temp: # temp.append(i) # for i in temp: # print(i) # except: # break while True: try: numbers = [] n = int(input().strip()) for i in range(n): tmp = int(input().strip()) if tmp not in numbers: numbers.append(tmp) # numbers = list(set(numbers)) numbers.sort() for i in numbers: print(i) except: break def test3(): """ 題目描述 •連續輸入字符串,請按長度爲8拆分每一個字符串後輸出到新的字符串數組; •長度不是8整數倍的字符串請在後面補數字0,空字符串不處理。 輸入描述: 連續輸入字符串(輸入2次,每一個字符串長度小於100) 輸出描述:輸出到長度爲8的新字符串數組 示例1 輸入 abc 123456789 輸出 abc00000 12345678 90000000 :return: None """ while True: try: strs = [] for i in range(2): strs.append(input()) for s in strs: while len(s) >= 8: print(s[:8]) s = s[8:] if 0 < len(s) < 8: print(s + '0' * (8 - len(s))) except: break def test4(): """ 題目描述 寫出一個程序,接受一個十六進制的數值字符串,輸出該數值的十進制字符串。(多組同時輸入 ) 輸入描述: 輸入一個十六進制的數值字符串。 輸出描述: 輸出該數值的十進制字符串。 示例1 輸入 0xA 輸出 10 :return: """ while True: try: h = input() if len(h) > 0: print(int(h, 16)) except: break def test5(): """ 題目描述 功能:輸入一個正整數,按照從小到大的順序輸出它的全部質數的因子(如180的質數因子爲2 2 3 3 5 ) 最後一個數後面也要有空格 詳細描述: 函數接口說明: public String getResult(long ulDataInput) 輸入參數: long ulDataInput:輸入的正整數 返回值: String 輸入描述: 輸入一個long型整數 輸出描述: 按照從小到大的順序輸出它的全部質數的因子,以空格隔開。最後一個數後面也要有空格。 示例1 輸入 180 輸出 2 2 3 3 5 :return: """ while True: try: l = int(input()) i = 2 while l != 1: if l%i == 0: print(i, end=' ') l = l/i else: i+=1 except: break def test6(): """ 題目描述 寫出一個程序,接受一個正浮點數值,輸出該數值的近似整數值。若是小數點後數值大於等於5,向上取整;小於5,則向下取整。 輸入描述: 輸入一個正浮點數值 輸出描述: 輸出該數值的近似整數值 示例1 輸入 複製 5.5 輸出 複製 6 :return: """ while True: try: f = float(input()) f += 0.5 print(int(f)) except: break def test7(): """ 數據表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值升序進行輸出。 題目描述 數據表記錄包含表索引和數值,請對錶索引相同的記錄進行合併,即將相同索引的數值進行求和運算,輸出按照key值升序進行輸出。 輸入描述: 先輸入鍵值對的個數 而後輸入成對的index和value值,以空格隔開 輸出描述: 輸出合併後的鍵值對(多行) 示例1 輸入 4 0 1 0 2 1 2 3 4 輸出 0 3 1 2 3 4 :return: """ while True: try: d = {} num = int(input()) for i in range(num): tmp = input() # tmp = sys.stdin.readline() k, v = map(int, (tmp.split())) # k, v = tmp.split() # k = int(k) # v = int(v) # d[k] = d.setdefault(k, 0) + v if k in d: d[k] = d[k] + v else: d[k] = v for i in sorted(d.keys()): print(i,d[i]) except: break def test8(): """ 題目描述 輸入一個int型整數,按照從右向左的閱讀順序,返回一個不含重複數字的新的整數。 輸入描述: 輸入一個int型整數 輸出描述: 按照從右向左的閱讀順序,返回一個不含重複數字的新的整數 示例1 輸入 9876673 輸出 37689 :return: """ num = input() num = ''.join(num[::-1]) print(num) lis = [] # lis = list(num[::1]) # print(lis) # lis = list(set(lis)) for i in num: if i not in lis: lis.append(i) print(lis) output = ''.join(lis[::1]) print(output) def test9(): """ 題目描述 編寫一個函數,計算字符串中含有的不一樣字符的個數。字符在ACSII碼範圍內(0~127)。不在範圍內的不做統計。 輸入描述: 輸入N個字符,字符在ACSII碼範圍內。 輸出描述: 輸出範圍在(0~127)字符的個數。 示例1 輸入 abc 輸出 3 :return: """ while True: try: acs = input() # chars = set() chars = [] for a in acs: # if 0 <= ord(a) <= 127: # chars.add(a) if a not in chars: chars.append(a) chars = ''.join(chars[::1]) print(len(chars)) except: break def test11(): """ 題目描述 描述: 輸入一個整數,將這個整數以字符串的形式逆序輸出 程序不考慮負數的狀況,若數字含有0,則逆序形式也含有0,如輸入爲100,則輸出爲001 輸入描述: 輸入一個int整數 輸出描述: 將這個整數以字符串的形式逆序輸出 示例1 輸入 1516000 輸出 0006151 :return: """ num = input() num = num[::-1] print(num) def test12(): """ 題目描述 將一個英文語句以單詞爲單位逆序排放。例如「I am a boy」,逆序排放後爲「boy a am I」 全部單詞之間用一個空格隔開,語句中除了英文字母外,再也不包含其餘字符 接口說明 /** * 反轉句子 * * @param sentence 原句子 * @return 反轉後的句子 */ public String reverse(String sentence); 輸入描述: 將一個英文語句以單詞爲單位逆序排放。 輸出描述: 獲得逆序的句子 示例1 輸入 I am a boy 輸出 boy a am I :return: """ # sentence = input() # lis = list(sentence.split()) # output = '' # for i in lis[::-1]: # output += (i + ' ') # output2 = '' # for i in output[:-1:1]: # output2 += i # print(output2) import re words = input() rev_words = re.split(r"[\t|\s]+", words) rev_words.reverse() print(" ".join(rev_words)) def test13(): """ 題目描述 給定n個字符串,請對n個字符串按照字典序排列。 輸入描述: 輸入第一行爲一個正整數n(1≤n≤1000),下面n行爲n個字符串(字符串長度≤100),字符串中只含有大小寫字母。 輸出描述: 數據輸出n行,輸出結果爲按照字典序排列的字符串。 示例1 輸入 複製 9 cap to cat card two too up boat boot 輸出 複製 boat boot cap card cat to too two up :return: """ num = int(input()) lis = [] for i in range(num): lis.append(input()) lis.sort() for i in lis: print(i) def test14(): """ 題目描述 輸入一個int型的正整數,計算出該int型數據在內存中存儲時1的個數。 輸入描述: 輸入一個整數(int類型) 輸出描述: 這個數轉換成2進制後,輸出1的個數 示例1 輸入 5 輸出 2 :return: """ num = int(input()) # output = bin(num).count('1') output = 0 while num > 0: output += (num & 1) num = num >> 1 print(output) def test15(): """ 題目描述 正整數A和正整數B 的最小公倍數是指 能被A和B整除的最小的正整數值,設計一個算法,求輸入A和B的最小公倍數。 輸入描述: 輸入兩個正整數A和B。 輸出描述: 輸出A和B的最小公倍數。 示例1 輸入 5 7 輸出 35 :return: """ n = input().split() a = int(n[0]) b = int(n[1]) i, j = a, b m = a % b while m != 0: a = b b = m m = a % b print(int(i * j / b)) def test16(): """ 題目描述 Lily上課時使用字母數字圖片教小朋友們學習英語單詞,每次都須要把這些圖片按照大小(ASCII碼值從小到大)排列收好。請你們給Lily幫忙,經過C語言解決。 輸入描述: Lily使用的圖片包括"A"到"Z"、"a"到"z"、"0"到"9"。輸入字母或數字個數不超過1024。 輸出描述: Lily的全部圖片按照從小到大的順序輸出 示例1 輸入 Ihave1nose2hands10fingers 輸出 0112Iaadeeefghhinnnorsssv :return: """ while True: try: seq = input() # lis = list(seq[::1]) # lis.sort() # seq = '' # for s in lis: # seq += s seq = ''.join(sorted(seq)) print(seq) except: break def test17(): """ 題目描述 找出字符串中第一個只出現一次的字符 輸入描述: 輸入一個非空字符串 輸出描述: 輸出第一個只出現一次的字符,若是不存在輸出-1 示例1 輸入 asdfasdfo 輸出 o :return: """ while True: try: s = input() for i in s: if s.count(i) == 1: print(i) break else: print('-1') except: break
''' 題目描述 骰子是一個立方體,每一個面一個數字,初始爲左1,右2,前3(觀察者方向),後4,上5,下6, 用123456表示這個狀態,放置到平面上,能夠向左翻轉(用L表示向左翻轉1次),能夠向右翻轉 (用R表示向右翻轉1次),能夠向前翻轉(用F表示向前翻轉1次),能夠向後翻轉(用B表示向後 翻轉1次),能夠逆時針旋轉(用A表示逆時針旋轉90度),能夠順時針旋轉(用C表示順時針旋轉 90度),現從初始狀態開始,根據輸入的動做序列,計算獲得最終的狀態。 輸入描述: 初始狀態爲:123456 輸入只包含LRFBAC的字母序列,最大長度50,可重複 輸出描述: 輸出最終狀態 示例1 輸入 複製 RA 輸出 複製 436512''' s = input() lis = ['1', '2', '3', '4', '5', '6'] for i in s: if i == 'R': l = lis[0] r = lis[1] u = lis[4] d = lis[5] lis[0] = d lis[1] = u lis[4] = l lis[5] = r elif i == 'L': l = lis[0] r = lis[1] u = lis[4] d = lis[5] lis[0] = u lis[1] = d lis[4] = r lis[5] = l elif i == 'F': f = lis[2] b = lis[3] u = lis[4] d = lis[5] lis[2] = d lis[3] = u lis[4] = f lis[5] = b elif i == 'B': f = lis[2] b = lis[3] u = lis[4] d = lis[5] lis[2] = u lis[3] = d lis[4] = b lis[5] = f elif i == 'A': l = lis[0] r = lis[1] f = lis[2] b = lis[3] lis[0] = f lis[1] = b lis[2] = r lis[3] = l elif i == 'C': l = lis[0] r = lis[1] f = lis[2] b = lis[3] lis[0] = b lis[1] = f lis[2] = l lis[3] = r s = ''.join(lis[::1]) print(s)