移远通信笔试题
移远通信笔试题
字符串函数去重一、题目背景
假设你是一名软件开发工程师,现在正在参加移远通信的笔试。移远通信是一家专注于物联网领域的公司,你需要完成以下题目。
二、题目要求
你需要实现以下两个函数:
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小时内删除。