华为2019校招笔试题之处理字符串(python版)
### 华为2019校招笔试题之处理字符串(python版) #### 题目解析 本题考察的是Python编程中对于字符串的操作能力,包括字符串的合法性判断、去重、循环左移以及排序等多个方面。下面将详细介绍题目的要求及解决方法。 #### 题目描述 题目要求对输入的字符串进行处理,具体步骤如下: 1. **检查非法字符**:检查输入的字符串是否包含非法字符。如果存在非法字符,则视为非法输入。 2. **输出合法字符串并去重**:将所有合法字符串输出,并去除重复的部分。 3. **输出非法字符串**:输出所有包含非法字符的字符串,不需要去重。 4. **循环左移10次**:对第二步得到的合法字符串进行循环左移10次。 5. **排序输出**:对第三步得到的字符串按照ASCII表的顺序进行排序输出。 #### 输入输出规则 - **输入描述**: - 字符串中的字符集合为'0'-'9'、'a'-'z'、'A'-'Z',其余为非法字符。 - 每个输入的字符串个数不超过100,且每个字符串长度不超过64。 - 连续的空字符串(如空格、制表符等)被视为一个空格处理。 - 输入以空行为结束标志。 - **输出描述**: - 输出合法字符串并去重。 - 输出非法字符串。 - 对合法字符串循环左移10次后的结果。 - 对上一步的结果按照ASCII表排序输出。 #### 示例分析 根据题目给出的示例,我们可以看到输入与输出的具体形式。 **输入示例**: ``` 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 ``` **输出示例**: ``` abcdefacd12344234tjgabd123abcdef1234 5678901234567890123456789012345678901234567 8901234567890123EDFGSDFGABCDEFccccdd asdfas234abc35765rgfh4sd1231 ==aga'-=as--sa*b=187&&^== bcaefd23acd1234tjg44bda231efabcd1234 5678901234567890123456789012345678901234567 8901231234567890FGEDFGSDBCAEFDccccdd asasdf4abc3523765rgfh4sd3112 1234567890123456789012345678901234567890123 45678901231234567890231234tjg4423acd131 124abc3523765rgfh4sdBCAEFDFGEDFGSDas asdfbcabdaccccddefabcdefd ``` #### 解题思路与代码实现 为了完成上述任务,我们需要按照以下步骤编写代码: 1. **读取输入**:通过循环读取输入直到遇到空行。 2. **判断合法性**:定义一个函数来判断字符串是否只包含合法字符。 3. **去重操作**:利用Python的集合特性来自动去除重复的字符串。 4. **循环左移**:定义一个函数来实现字符串的循环左移。 5. **排序输出**:使用Python内置的排序函数进行排序。 具体的Python代码实现如下: ```python import re # 定义一个函数来判断字符串是否合法 def is_valid_string(s): valid_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ' return all(c in valid_chars for c in s) # 定义一个函数来循环左移字符串 def rotate_left(s, n): n = n % len(s) # 防止n大于字符串长度 return s[n:] + s[:n] # 主程序 if __name__ == '__main__': legal_strings = set() illegal_strings = [] while True: try: line = input().strip() if not line: # 如果输入为空行,则结束 break if is_valid_string(line): legal_strings.add(line) else: illegal_strings.append(line) except EOFError: break # 处理合法字符串 legal_strings = list(legal_strings) rotated_strings = [rotate_left(s, 10) for s in legal_strings] sorted_strings = sorted(rotated_strings) # 输出结果 print(' '.join(sorted_strings)) print(' '.join(illegal_strings)) ``` 以上就是针对该题目的详细解析与解答。通过这个练习,我们可以进一步加深对Python中字符串处理的理解和掌握。
































- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于吠陀乘法的低功耗自适应滤波
- 移动设计jqueryweb八十五
- 网上游客服务中心-JAVA-基于SSM喀什网上游客服务中心系统设计与实现
- 网上游客服务中心-JAVA-基于SSM喀什网上游客服务中心系统设计与实现
- 华中科技大学网络空间安全学院2020级C语言程序设计课程实验报告项目-包含表达式和标准输入输出流程控制函数与程序结构编译预处理数组指针结构与联合文件操作等八个实验模块的完整代码与详.zip
- 网络安全新范式:从防御到韧性
- 移动设计jqueryweb八十六
- 点阵液晶字模图片提取软件(v2.1)
- 作业自动评估-JAVA-基于SSM作业自动评估系统设计与实现
- 作业自动评估-JAVA-基于SSM作业自动评估系统设计与实现
- 移动设计jqueryweb八十七
- 云环境恶意内部检测
- 自然语言处理实验报告(4个实验)
- 喀什美食订餐网-JAVA-基于SSM喀什美食订餐网设计与实现(毕业论文+PPT)
- 喀什美食订餐网-JAVA-基于SSM喀什美食订餐网设计与实现(毕业论文+PPT)
- 移动设计jqueryweb八十八


