移远通信笔试题
移远通信笔试题
字符串函数去重一、题目背景
假设你是一名软件开发工程师,现在正在参加移远通信的笔试。移远通信是一家专注于物联网领域的公司,你需要完成以下题目。
二、题目要求
你需要实现以下两个函数:
1. checkIP(ip: str) -> bool
判断给定的字符串是否为一个合法的 IPv4 地址。
2. removeDup(s: str) -> str
将给定字符串中的重复字符去除,保证每个字符在结果中只出现一次。
你的实现需要满足以下要求:
1. 按照 PEP8 规范编写代码。
2. 在合适的地方添加注释,说明函数的作用,参数和返回值。
3. 使用 pytest 对函数进行测试。
三、题目思路
1. 判断给定字符串是否为合法的 IPv4 地址,需要对该字符串进行分割,并且对每个数字进行检查。
2. 对于去重函数,可以使用 Python 的 set 数据结构完成去重。
四、代码实现
1. checkIP 函数实现
```python
def checkIP(ip: str) -> bool:
"""
判断给定的字符串是否为一个合法的 IPv4 地址。
:param ip: 待判断的字符串
:return: 判断结果,True 为合法, False 为不合法
"""
# 将 IP 字符串按照 . 进行分割
segments = ip.split('.')
# 如果分割后段数不为 4 则不合法
if len(segments) != 4:
return False
# 对每个段进行检查
for segment in segments:
# 每个段必须为数字
if not segment.isdigit():
return False
# 数字范围必须在 [0, 255] 之间
num = int(segment)
if num < 0 or num > 255:
return False
# 数字不能以 0 开头,除非该数字为 0
if num != 0 and segment.startswith('0'):
return False
# 所有检查均通过,该 IP 地址合法
return True
```
2. removeDup 函数实现
```python
def removeDup(s: str) -> str:
"""
将给定字符串中的重复字符去除,保证每个字符在结果中只出现一次。
:param s: 待去重的字符串
:return: 计算结果
"""
# 将字符串转化为集合,去重后再转化回字符串
s_set = set(s)
return ''.join(s_set)
```
3. 测试代码
```python
import pytest
def test_checkIP():
assert checkIP('192.168.0.1') == True
assert checkIP('192.168.0.01') == False
assert checkIP('192.168.0.256') == False
assert checkIP('192.168.0') == False
assert checkIP('192.168.0.1.1') == False
def test_removeDup():
assert removeDup('hello world!') == ' wehlor!d'
assert removeDup('apple') == 'aple'
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论