字符串相关算法操作

# 函数1: 计算一个数组中除了自身以外所有元素的乘积  
def product_except_self_1(array):  
    if not array:  # 如果数组为空,返回None  
        return None  
    length = len(array)  
    # 初始化三个列表: 答案列表(ans)、左侧乘积列表(Lp)、右侧乘积列表(Rp)  
    ans, Lp, Rp = [0] * length, [0] * length, [0] * length  
  
    # 设置Lp和Rp的第一个和最后一个元素为1  
    Lp[0], Rp[length - 1] = 1, 1  
  
    # 计算每个元素左侧的乘积  
    for i in range(1, length):  
        Lp[i] = array[i] * Lp[i-1]  
  
    # 计算每个元素右侧的乘积  
    for j in reversed(range(length - 1)):  
        Rp[j] = Rp[j + 1] * array[j + 1]  
  
    # 计算除了每个元素自身的乘积  
    for i in range(length):  
        ans[i] = Lp[i] * Rp[i]  
  
    return ans  
  
# 函数2: 另一种计算一个数组中除了自身以外所有元素的乘积的方法  
def product_except_self_2(array):  
    if not array:  # 如果数组为空,返回None  
        return None  
    length = len(array)  
    # 初始化答案列表  
    ans = [0] * length  
    ans[0] = 1  
  
    # 计算每个元素左侧的乘积  
    for i in range(1, length):  
        ans[i] = array[i - 1] * ans[i - 1]  
  
    # 计算每个元素右侧的乘积,并与左侧的乘积相乘  
    R = 1  
    for j in reversed(range(length)):  
        ans[j] = R * ans[j]  
        R = R * ans[j]  
    return ans  
  
# 函数3: 检查数组中是否存在三个递增的数
def third_inc(array):  
    if not array:  # 如果数组为空,返回None  
        return None  
    first, second = array[0], float['inf']  # 初始化两个变量来跟踪最大的两个元素  
  
    # 遍历数组中的每个元素  
    for ele in array:  
        if ele > second:  # 如果找到一个元素大于当前的最大元素,返回True  
            return True  
        if ele > first:  # 如果找到一个元素大于当前的第二大元素,更新最大元素和第二大元素  
            second = ele  
        else:  # 否则,更新第二大元素  
            first = ele  
  
    return False  # 如果没有找到符合条件的元素,返回False  
  
# 函数4: 压缩连续字符的数组表示形式  
def suppress_char(array):  
    if not array:  # 如果数组为空,返回None  
        return None  
  
    result = []  # 初始化结果列表  
    temp = None  # 初始化临时变量来跟踪当前字符  
    num = 0  # 初始化计数器来跟踪连续字符的数量  
  
    # 遍历数组中的每个字符  
    for w in array:  
        if temp is None:  # 如果临时变量为空,添加字符到结果列表,并更新临时变量和计数器  
            result.append(w)  
            temp = w  
            num += 1  
        elif temp != w:  # 如果临时变量与当前字符不同,检查计数器的值,并添加字符到结果列表  
            if num != 1:  
                result.append(str(num))  
            result.append(w)  
        else:  # 如果临时变量与当前字符相同,增加计数器的值  
            num += 1  
    return result

水平有限,有问题随时联系~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值