字符串相关算法操作"/>
字符串相关算法操作
# 函数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
水平有限,有问题随时联系~
更多推荐
字符串相关算法操作
发布评论