编程笔试(解析及代码实现):字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 编程笔试(解析及代码实现):字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略


目录

字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略

耗费时间对比

T1、使用字符串切片的方法

T2、使用reversed()方法

T3、使用list和reverser()方法

T4、使用reduce方法

T5、while循环+空列表+字符串拼接

T6、利用list和字符串拼接

T7、while循环+字符串拼接

T8、利用栈的思维

T9、利用递归思想

T10、利用一行代码(for循环+字符串拼接)

T11、利用for循环+倒叙提字母+字合并符串


网友思路参考 文章Reverse a string in Python - Stack Overflow

字符串反转(字符串逆序输出)代码实现十多种方法对比(解析思路及其耗费时间)详细攻略

耗费时间对比

方法 耗费时间 
T1、使用字符串切片的方法 str01: 0.004107
T2、使用reversed()方法 str02: 0.007081
T3、使用list和reverser()方法 str03: 0.006830
T4、使用reduce方法 str04: 0.202377
T5、while循环+空列表+字符串拼接 str05: 0.027280
T6、利用list和字符串拼接 str06: 0.036437
T7、while循环+字符串拼接 str07: 0.036202
T8、利用栈的思维 str08: 0.057554
T9、利用递归思想 最长!
T10、利用一行代码(for循环+字符串拼接) str10: 0.030771
T11、利用for循环+倒叙提字母+字合并符串 str11: 0.027477

T1、使用字符串切片的方法

1. import time
2. 
3. # str_temp = '123456789'
4. str_temp = '123456789'*10000
5. 
6. 
7. # T1、使用字符串切片的方法
8. STime1 = time.clock()
9. str01 = str_temp[::-1]
10. print(str01)
11. 
12. ETime1 = time.clock()
13. CostTime1=ETime1-STime1
14. print('str01:','%.6f' % CostTime1)

T2、使用reversed()方法

1. # T2、使用reversed()方法
2. STime2 = time.clock()
3. str02 = ''.join(reversed(str_temp))
4. print(str02)
5. 
6. ETime2 = time.clock()
7. CostTime2=ETime2-STime2
8. print('str02:','%.6f' % CostTime2)

T3、使用list和reverser()方法

1. # T3、使用list和reverser()方法
2. STime3 = time.clock()
3. str_temp2list = list(str_temp)
4. str_temp2list.reverse()
5. str03 = ''.join(str_temp2list)
6. print(str03)
7. 
8. ETime3 = time.clock()
9. CostTime3=ETime3-STime3
10. print('str03:','%.6f' % CostTime3)

T4、使用reduce方法

1. # T4、使用reduce方法
2. from functools import reduce
3. STime4 = time.clock()
4. str04 = reduce(lambda x,y : y+x, str_temp)
5. print(str04)
6. 
7. ETime4 = time.clock()
8. CostTime4=ETime4-STime4
9. print('str04:','%.6f' % CostTime4)

T5、while循环+空列表+字符串拼接

1. # T5、for循环+空列表+字符串拼接
2. STime5 = time.clock()
3. str05 = []
4. str_temp_len = len(str_temp)
5. while str_temp_len:
6.     str_temp_len -= 1
7.     str05.append(str_temp[str_temp_len])
8. print(''.join(str05))
9. 
10. ETime5 = time.clock()
11. CostTime5=ETime5-STime5
12. print('str05:','%.6f' % CostTime5)

T6、利用list和字符串拼接

1. # T6、利用list和字符串拼接
2. STime6 = time.clock()
3. str06 = ''
4. str_temp_len = len(str_temp)
5. for i in range(str_temp_len - 1, -1, -1):
6.     str06 += str_temp[i]
7. print(str06)
8. 
9. ETime6 = time.clock()
10. CostTime6=ETime6-STime6
11. print('str06:','%.6f' % CostTime6)

T7、while循环+字符串拼接

1. # T7、while循环+字符串拼接
2. STime7 = time.clock()
3. str07 = ''
4. str_temp_len = len(str_temp)
5. while str_temp_len:
6.     str_temp_len -= 1
7.     str07 += str_temp[str_temp_len]
8. print(str07)
9. 
10. ETime7 = time.clock()
11. CostTime7=ETime7-STime7
12. print('str07:','%.6f' % CostTime7)

T8、利用栈的思维

1. # T8、利用栈的思维
2. STime8 = time.clock()
3. str_temp2list = list(str_temp) #模拟全部入栈
4. str08 = ""
5. while len(str_temp2list)>0:
6.     str08 += str_temp2list.pop() #模拟出栈
7. print(str08)
8. 
9. ETime8 = time.clock()
10. CostTime8=ETime8-STime8
11. print('str08:','%.6f' % CostTime8)

T9、利用递归思想

1. #  T9、利用递归思想
2. def r_string(str_temp):
3. if len(str_temp) == 1:
4. return str_temp
5. return str_temp[-1] + r_string(str_temp[:-1])
6. STime9 = time.clock()
7. str09 = r_string(str_temp)
8. print(str09)
9. 
10. ETime9 = time.clock()
11. CostTime9=ETime9-STime9
12. print('str09:','%.6f' % CostTime9)

T10、利用一行代码(for循环+字符串拼接)

1. #  T10、利用一行代码(for循环+字符串拼接)
2. STime10 = time.clock()
3. str10 = ''.join(str_temp[len(str_temp) - i - 1] for i in range(len(str_temp)))
4. print(str10)
5. 
6. ETime10 = time.clock()
7. CostTime10=ETime10-STime10
8. print('str10:','%.6f' % CostTime10)

T11、利用for循环+倒叙提字母+字合并符串

1. # T11、利用for循环+倒叙提字母+字合并符串
2. STime11 = time.clock()
3. str11=''
4. for i in range(1,len(str_temp)+1):
5.     str11=str11+str_temp[-i]
6. print(str11)
7. 
8. ETime11 = time.clock()
9. CostTime11=ETime11-STime11
10. print('str11:','%.6f' % CostTime11)


相关文章
|
15天前
|
人工智能
歌词结构的巧妙安排:写歌词的方法与技巧解析,妙笔生词AI智能写歌词软件
歌词创作是一门艺术,关键在于巧妙的结构安排。开头需迅速吸引听众,主体部分要坚实且富有逻辑,结尾则应留下深刻印象。《妙笔生词智能写歌词软件》提供多种 AI 功能,帮助创作者找到灵感,优化歌词结构,写出打动人心的作品。
|
1天前
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
|
8天前
|
安全 程序员 API
|
5天前
|
存储 设计模式 分布式计算
Java中的多线程编程:并发与并行的深度解析####
在当今软件开发领域,多线程编程已成为提升应用性能、响应速度及资源利用率的关键手段之一。本文将深入探讨Java平台上的多线程机制,从基础概念到高级应用,全面解析并发与并行编程的核心理念、实现方式及其在实际项目中的应用策略。不同于常规摘要的简洁概述,本文旨在通过详尽的技术剖析,为读者构建一个系统化的多线程知识框架,辅以生动实例,让抽象概念具体化,复杂问题简单化。 ####
|
4天前
|
设计模式 安全 Java
Java编程中的单例模式深入解析
【10月更文挑战第31天】在编程世界中,设计模式就像是建筑中的蓝图,它们定义了解决常见问题的最佳实践。本文将通过浅显易懂的语言带你深入了解Java中广泛应用的单例模式,并展示如何实现它。
|
13天前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
43 10
|
8天前
|
机器学习/深度学习 人工智能 安全
TPAMI:安全强化学习方法、理论与应用综述,慕工大、同济、伯克利等深度解析
【10月更文挑战第27天】强化学习(RL)在实际应用中展现出巨大潜力,但其安全性问题日益凸显。为此,安全强化学习(SRL)应运而生。近日,来自慕尼黑工业大学、同济大学和加州大学伯克利分校的研究人员在《IEEE模式分析与机器智能汇刊》上发表了一篇综述论文,系统介绍了SRL的方法、理论和应用。SRL主要面临安全性定义模糊、探索与利用平衡以及鲁棒性与可靠性等挑战。研究人员提出了基于约束、基于风险和基于监督学习等多种方法来应对这些挑战。
20 2
|
12天前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
21 1
|
15天前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
13 1
|
12天前
|
设计模式 SQL 安全
Java编程中的单例模式深入解析
【10月更文挑战第24天】在软件工程中,单例模式是设计模式的一种,它确保一个类只有一个实例,并提供一个全局访问点。本文将探讨如何在Java中使用单例模式,并分析其优缺点以及适用场景。
10 0

推荐镜像

更多
下一篇
无影云桌面