亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

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

系統 1524 0

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

題目介紹

            
#################################################################
#################################################################
'''
題目描述:
-- 對輸入字符串檢查是否存在非法字符,輸出合法字符串(去重)和非法字符串(不去重)
-- 對合法字符串循環左移10次,在進行排序輸出。(舉例:比如字符串"abc",循環左移一次的結果為"bca")
輸入描述:
(1) 字符串中的字符集合為 '0'-'9','a'-'z','A'-'Z',其余為非法字符串(空字符串作為定界符),
 有非法字符的字符串被視為非法輸入;
(2) 作為輸入的字符串個數不超過100,每個字符串長度不超過64;
(3) 作為輸入的連續空字符串(空格/制表符/回車/換行符)作為一個空格處理(作為定界符,字符串起始字符不能為空);
(4) 輸入每行只有一個字符串
(5) 輸入以空行結束
輸出描述:
(1) 輸出合法字符串并去重
(2) 輸出所有非法字符串
(3) 對結果1的去重合法字符串循環左移10次
(4) 對結果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() 函數用于在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
# ord('a') 返回字符a的ASCII碼
# index = [m.start() for m in re.finditer(' ',x)] 返回輸入字符串中空格所在索引位置
# 字符串去重時,由于需要刪除列表新加入的元素,而remove()只能移除列表中第一個匹配的元素,因此需要找到需去重的字符串索引
# 用pop(index),從后往前的彈出。由于在此期間存儲字符串的列表長度在動態改變,而for循環不能動態改變數組長度,因此用while

# split(str="",num=string.count(str)) 函數
# 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):    # 輸入以空行結束,break語句較強應放在 continue語句前,不然會陷入死循環
  break
 if len(line) > 64:    # 每個字符串長度不超過64
  continue
 if len(string_list) > 100-1:   # 輸入字符串個數不超過100
  continue
 if (line.startswith(' ')) & (0 != len(line)): # 輸入字符串不能以空格開始
  continue
 temp_str = line.split()    # split(),默認分割(刪除)所有的空字符,包括空格、換行(\n)、制表符(\t)等
 string_list.append(' '.join(temp_str))  # 輸入的連續空字符串(空格/制表符/回車/換行符)作為一個空格處理
 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


# 去除列表中重復的字符串
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)  # 統計重復字符串個數
 if ix == len(remove_repeated_str)-1:
  break
 if count == 1:
  ix = ix + 1
  continue
 while count > 1:     # for循環不能動態改變數組長度,因此用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


# 輸出字符串結果
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次后的結果
 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()
          

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲高清成人欧美动作片 | 久草在线在线精品观看 | 国内精品一级毛片免费看 | 91在线精品免费观看 | 一级毛片免费视频网站 | 国产成年视频 | 久久伊人成人网 | 欧美成人毛片免费视频 | 欧美最猛性xxxxx短视频 | 在线免费看a | 亚洲精品久久久久福利网站 | 在线国产福利 | 中文字幕国产欧美 | 亚洲精品久久九九热 | 亚洲午夜久久久久国产 | 狠狠色丁香久久婷婷综合丁香 | 欧美一级欧美三级在线观看 | 青青青爽视频在线观看 | 欧美久久影院 | 色噜噜狠狠成人中文小说 | 婷婷影音| 第一福利视频网 | 成人短视频在线观看视频 | 四虎国产欧美成人影院 | 曰批免费视频播放在线看片二 | 欧美视频在线观看一区二区 | 精品国精品国产自在久国产不卡 | 日韩a级片 | 一本色道久久爱88a 一本色道久久爱88av俺来也 | 久久中文精品 | 欧美日韩免费大片 | 特黄十八岁大片 | 天天做天天爱夜夜爽女人爽宅 | 天天操天天曰 | 欧美一级美片在线观看免费 | 女性一级全黄生活片免费看 | 毛片网站在线 | 国产美女网址 | 久久精品视频网 | 欧美一区二区三区免费视频 | 热99在线观看 |