亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

華為2019校招筆試題之處理字符串(python版)

 更新時間:2019年06月25日 08:36:11   作者:拾一滴清水  
這篇文章主要為大家詳細介紹了華為2019校招筆試題之處理字符串,具有一定的參考價值,感興趣的小伙伴們可以參考一下

華為2019在線筆試題,現(xiàn)整理如下,以供之后參考
GitHub

題目介紹

#################################################################
#################################################################
'''
題目描述:
-- 對輸入字符串檢查是否存在非法字符,輸出合法字符串(去重)和非法字符串(不去重)
-- 對合法字符串循環(huán)左移10次,在進行排序輸出。(舉例:比如字符串"abc",循環(huán)左移一次的結(jié)果為"bca")
輸入描述:
(1) 字符串中的字符集合為 '0'-'9','a'-'z','A'-'Z',其余為非法字符串(空字符串作為定界符),
 有非法字符的字符串被視為非法輸入;
(2) 作為輸入的字符串個數(shù)不超過100,每個字符串長度不超過64;
(3) 作為輸入的連續(xù)空字符串(空格/制表符/回車/換行符)作為一個空格處理(作為定界符,字符串起始字符不能為空);
(4) 輸入每行只有一個字符串
(5) 輸入以空行結(jié)束
輸出描述:
(1) 輸出合法字符串并去重
(2) 輸出所有非法字符串
(3) 對結(jié)果1的去重合法字符串循環(huán)左移10次
(4) 對結(jié)果3合法字符串字符串排序,按ASCII表字符從小到大順序排序
注意事項:
-- 每輸入一個字符后用空格跟下一個字符串隔離,作為輸出的所有字符串之間只能有一個空格(作為定界符);
示例1:
-- 輸入
abc
def
==
acd123
44234tjg
aga'-=
ad--s
abd
123
abcdef
1234567890123456789012345678901234567890123
45678901234567890123
EDFG
SDFG
ABC
DEF
cccc
a*b=1
dd
87&&^
asdfas
234abc35
765rgfh4sd
1231
123
==
EDFG

-- 輸出
abc def acd123 44234tjg abd 123 abcdef 1234
5678901234567890123456789012345678901234567
8901234567890123 EDFG SDFG ABC DEF cccc dd
asdfas 234abc35 765rgfh4sd 1231
== aga'-= as--s a*b=1 87&&^ ==
bca efd 23acd1 234tjg44 bda 231 efabcd 1234
5678901234567890123456789012345678901234567
8901231234567890 FGED FGSD BCA EFD cccc dd
asasdf 4abc3523 765rgfh4sd 3112
1234567890123456789012345678901234567890123
45678901231234567890 231 234tjg44 23acd1 31
12 4abc3523 765rgfh4sd BCA EFD FGED FGSD as
asdf bca bda cccc dd efabcd efd
'''

一些技巧

##################################################################
##################################################################
'''
NOTE:
# 注意輸入時strip()、split()用法
# extend() 函數(shù)用于在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
# ord('a') 返回字符a的ASCII碼
# index = [m.start() for m in re.finditer(' ',x)] 返回輸入字符串中空格所在索引位置
# 字符串去重時,由于需要刪除列表新加入的元素,而remove()只能移除列表中第一個匹配的元素,因此需要找到需去重的字符串索引
# 用pop(index),從后往前的彈出。由于在此期間存儲字符串的列表長度在動態(tài)改變,而for循環(huán)不能動態(tài)改變數(shù)組長度,因此用while

# split(str="",num=string.count(str)) 函數(shù)
# str_test = 'This\t\t is a\t\t\t test for split()'
# 輸入:str_test.split()  # 默認分割(刪除)所有的空字符,包括空格、換行(\n)、制表符(\t)等
# 輸出:['This', 'is', 'a', 'test', 'for', 'split()']
# 輸入:str_test.split('s') # 分割所有的字符s
# 輸出:['Thi', '\t\t i', ' a\t\t\t te', 't for ', 'plit()']
# 輸入:str_test.split('s',2) # 分割前2個字符s
# 輸出:['Thi', '\t\t i', ' a\t\t\t test for split()']
'''

具體代碼

import sys


# 初始化輸入
def input_init():
 string_list = []
 while True:
 line = sys.stdin.readline().rstrip('\n') # 逐行讀入,并去除行末的換行符
 if 0 == len(line):    # 輸入以空行結(jié)束,break語句較強應(yīng)放在 continue語句前,不然會陷入死循環(huán)
  break
 if len(line) > 64:    # 每個字符串長度不超過64
  continue
 if len(string_list) > 100-1:   # 輸入字符串個數(shù)不超過100
  continue
 if (line.startswith(' ')) & (0 != len(line)): # 輸入字符串不能以空格開始
  continue
 temp_str = line.split()    # split(),默認分割(刪除)所有的空字符,包括空格、換行(\n)、制表符(\t)等
 string_list.append(' '.join(temp_str))  # 輸入的連續(xù)空字符串(空格/制表符/回車/換行符)作為一個空格處理
 return string_list


# 保存合法字符串
def get_legal_string(string_list: list):
 number_ls = list("0123456789")
 letter_ls = list("abcdefghijklmnopqrstuvwxyz")
 up_letter_ls = []
 for letter in letter_ls:
 up_letter_ls.append(letter.upper())

 flag = int(0)
 legal_str = []

 for index in range(0, len(string_list)):
 temp_str = string_list[index]
 for ix in range(0, len(temp_str)):
  x = temp_str[ix]
  if (x in number_ls) | (x in letter_ls) | (x in up_letter_ls):
  # 合法字符串
  flag = 1
  else:
  flag = 0
  break
 if flag:
  legal_str.append(temp_str)
 return legal_str


# 去除列表中重復(fù)的字符串
def remove_repeat_string(string_list: list):
 remove_repeated_str = string_list.copy()
 ix = 0
 while True:
 temp_str = remove_repeated_str[ix]
 count = remove_repeated_str.count(temp_str)  # 統(tǒng)計重復(fù)字符串個數(shù)
 if ix == len(remove_repeated_str)-1:
  break
 if count == 1:
  ix = ix + 1
  continue
 while count > 1:     # for循環(huán)不能動態(tài)改變數(shù)組長度,因此用while
  count = count - 1
  j = 1
  while True:
  need_remove = remove_repeated_str[-j]  # 反序遍歷
  if temp_str == need_remove:
   #remove_repeated_str.remove(need_remove) # 因為remove()只能移除列表中第一個匹配的元素
   pop_index = len(remove_repeated_str) - j
   remove_repeated_str.pop(pop_index)  # 刪除指定索引位置元素(反序)
   break
  else:
   j = j + 1
 return remove_repeated_str


# 保存非法字符串
def get_non_legal_string(raw_string_list: list, legal_string: list):
 non_legal_str = []
 for i in raw_string_list:
 if i in legal_string:
  continue
 non_legal_str.append(i)
 return non_legal_str


# 左移10次字符 10%len(str)
def shift_string(string_list: list):
 shift_string = []
 for shift_str in string_list:
 start = 10 % len(shift_str)
 shift_temp = ""
 shift_temp += shift_str[start:]
 shift_temp += shift_str[:start]
 shift_string.append(shift_temp)
 return shift_string


# 輸出字符串結(jié)果
def output_string(string_list: list):
 output = ""
 for str_ in string_list:
 output += str_ + " "
 print(output)


def main():
 # 原始輸入
 str_list = input_init()
 # 保存合法字符串
 legal_str = get_legal_string(str_list)
 # 保存非法字符串
 non_legal_str = get_non_legal_string(raw_string_list=str_list, legal_string=legal_str)
 # 保存合法字符串_去重
 remove_repeated_string = remove_repeat_string(legal_str)
 # 1.輸出去重合法字符串
 output_string(remove_repeated_string)
 # 2.輸出未去重的非法字符串
 output_string(non_legal_str)
 # 3.輸出去重合法字符串左移10次后的結(jié)果
 shift_legal_str = shift_string(remove_repeated_string)
 output_string(shift_legal_str)
 # 4.輸出對合法字符串字符串左移后排序,按ASCII表字符從小到大順序排序
 shift_legal_str = sorted(shift_legal_str)
 output_string(shift_legal_str)


if __name__ == '__main__':
 main()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用OpenCV獲取圖像某點的顏色值,并設(shè)置某點的顏色

    使用OpenCV獲取圖像某點的顏色值,并設(shè)置某點的顏色

    這篇文章主要介紹了使用OpenCV獲取圖像某點的顏色值,并設(shè)置某點的顏色,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Java與Python兩大幸存者誰更勝一籌呢

    Java與Python兩大幸存者誰更勝一籌呢

    Python起源于一種腳本語言,它的語法體現(xiàn)了一種可讀性的理念,具有簡單而規(guī)則的界限,鼓勵簡潔和一致的代碼布局,而Java是一種面向?qū)ο笳Z言,其吸引力和價值所在是其具有的可移植性和相對效率。下面通過本文了解下java python 誰更勝一籌
    2018-04-04
  • Python使用chardet判斷字符編碼

    Python使用chardet判斷字符編碼

    這篇文章主要介紹了Python使用chardet判斷字符編碼的方法,較為詳細的分析了Python中chardet的功能、安裝及使用技巧,需要的朋友可以參考下
    2015-05-05
  • python?pygame實現(xiàn)五子棋雙人聯(lián)機

    python?pygame實現(xiàn)五子棋雙人聯(lián)機

    這篇文章主要為大家詳細介紹了python?pygame實現(xiàn)五子棋雙人聯(lián)機,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • TensorFlow模型保存/載入的兩種方法

    TensorFlow模型保存/載入的兩種方法

    這篇文章主要為大家詳細介紹了TensorFlow 模型保存/載入的兩種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 11個Python3字典內(nèi)置方法大全與示例匯總

    11個Python3字典內(nèi)置方法大全與示例匯總

    這篇文章主要給大家介紹了11個Python3字典內(nèi)置方法大全與示例的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 如何利用python?turtle繪圖自定義畫布背景顏色

    如何利用python?turtle繪圖自定義畫布背景顏色

    Turtle庫是Python語言中一個很流行的繪制圖像的函數(shù)庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標系原點,(0,0)位置開始,這篇文章主要給大家介紹了關(guān)于如何利用python?turtle繪圖自定義畫布背景顏色的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • python實現(xiàn)簡單的udp發(fā)送和接收

    python實現(xiàn)簡單的udp發(fā)送和接收

    這篇文章主要介紹了python實現(xiàn)簡單的udp發(fā)送和接收方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python 壓縮打包文件/文件夾的方法

    Python 壓縮打包文件/文件夾的方法

    本文主要介紹了Python?壓縮打包文件/文件夾的方法,分兩種類型處理,打包文件是需要傳入文件的路徑,打包文件夾是傳入文件夾的路徑,感興趣的可以了解一下
    2023-12-12
  • python圖像處理模塊Pillow的學(xué)習(xí)詳解

    python圖像處理模塊Pillow的學(xué)習(xí)詳解

    這篇文章主要介紹了python圖像處理模塊Pillow的學(xué)習(xí)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論