反转字符串——Python笔试题干货

目录

一、举例

二、几种实现方法

方法1:切片--简单好用

方法2:使用reversed()方法

方法3:使用while循环

方法4:使用for循环字符串拼接(慢)

方法5:使用递归(慢)

方法6:模拟出栈pop()

方法7:reduce()--不常用

三、总结


一、举例

例题:反转字符串,将字符串倒序结果字符串输出

输入:a=1223456789'

输出:987654321

二、几种实现方法

方法1:切片--简单好用

a = '123456789'
print(a[::-1])  # 利用字符串下标倒序输出

运行结果

方法2:使用reversed()方法

此方法可读性好,但速度是慢的

print(''.join(reversed('123456789')))

运行结果

方法3:使用while循环

import time


# 1、使用字符串进行循环获取
def reverse_string(str):
    str1 = ''  # 定义空字符串
    index = len(str)  # 字符串长度
    # 在str字符穿长度内执行循环语句,实现倒序输出
    while index:
        index -= 1                       
        str1 += str[index]
    return str1

start_time = time.time()  # 运行开始时间

a = '123456789'
result = reverse_string(a)
print(result)

end_time = time.time()  # 运行结束时间
run_time = end_time - start_time
print("字符串循环实现代码运行时间是:",run_time)

import time


# 2、使用list循环获取,再转换成字符串类型
def reverse_string_list(str):
    str_lis = [] # 定义空列表
    index = len(str)  # 字符串长度
    # 在str字符穿长度内执行循环语句,实现倒序输出
    while index:
        index -= 1                       
        str_lis.append(str[index])  # 将下标对应值输出到空列表str_lis中
    return ''.join(str_lis)


start_time_lis = time.time()

a = '123456789'
result_lis = reverse_string_list(a)
print(result_lis)

end_time_lis = time.time()
run_time_lis = end_time_lis - start_time_lis
print("列表循环实现代码运行时间是:",run_time_lis)

方法4:使用for循环字符串拼接(慢)

import time


def reverse_string(str):
    l = len(str)
    x=""
    for i in range(l-1,-1,-1):
        x += str[i]
    return x
    
    
start_time = time.time()
result = reverse_string('123456789')
print(result)

end_time = time.time()
run_time = end_time - start_time
print("代码运行时间是:",run_time)

方法5:使用递归(慢)

import time


def reverse_string(s): 
    if len(s) == 1:  # 判断字符串长度是否只含有一位数字,若是直接返回,本身即为反转后的字符串
        return s
    str = s[-1] + reverse_string(s[:-1])  # 利用递归实现
    return str
    
    
start_time = time.time()
a = '123456789'
result = reverse_string(a)
print(result)

end_time = time.time()
run_time = end_time - start_time
print("代码运行时间是:",run_time)

方法6:模拟出栈pop()

import time


def reverse_string(str):
    l = list(str)  # 模拟全部入栈
    new_string = ""
    while len(l)>0:
        new_string += l.pop()  # 模拟出栈
    return new_string

start_time_lis = time.time()

a = '123456789'
result = reverse_string(a)
print(result)

end_time_lis = time.time()
run_time_lis = end_time_lis - start_time_lis
print("pop()实现代码运行时间是:",run_time_lis)

方法7:reduce()--不常用

此方法再python3中已被移入functools模块中,其作用实现相当于for,但对于代码运行性能有要求的话,要尽量减少使用此方法,在实际应用中不常用reduce(),所以在此就不详细举例说明了,有想要的可自行查找学习reduce与for性能对比

三、总结

        通过以上几种字符串反转输出实现方法,可得出对于运行速度以及复杂程度来说,方法一是最常用到的,也是最简便的实现方法。灵活运用下标索引是非常重要的。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值