博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【剑指offer】面试题42:单词翻转顺序&左右旋转字符串
阅读量:4069 次
发布时间:2019-05-25

本文共 1342 字,大约阅读时间需要 4 分钟。

这里尽可能的不去用语言本身提供的函数。

将string逆置

def reverse(string):	#return string[::-1]	reversedStr = ''	for i in xrange(len(string) - 1, -1, -1):		reversedStr += string[i]	return reversedStr
单词的翻转
def reverseWords(string):	if len( string ) <= 1: return	split = ' '	reversedStr = ''	word = ''	# reverse every word in string	for c in string:		if c == split:			word = reverse(word) + split			reversedStr += word			word = ''		else:			word += c	# the last word	reversedStr += reverse(word)	# reverse the whole string	reversedStr = reverse(reversedStr)	return reversedStr
这里没有考虑前导空格之类的复杂情况,默认string是非常规整的,单词间由一个空格隔开。

字符串的左右旋转,右旋转我们将字符串后面的n个字符移到最前面。通过参数direction来区别,实参为‘l',’L‘, ’r‘, ’R'.

'''	@ if direction = 'l' or 'L', move n items from front to end	@ if direction = 'r' or 'R', move n items from back to front'''def RotateString(string, n, direction):	if n >= len(string) or n <= 0: 		return string	reversedStr = ''	leftpart = ''	rightpart = ''	# move last n chiracter to front	if direction == 'r' or direction == 'R': 		n = len(string) - n			for i in range(n):		leftpart += string[i]	for i in range(n, len(string)):		rightpart += string[i]	reversedStr += reverse(leftpart)	reversedStr += reverse(rightpart)	reversedStr = reverse(reversedStr)	return reversedStr
若觉得单词翻转的实现繁琐,也可以直接用语言本身提供的函数,但是不推荐。

def reverseWords(string):	return ' '.join(string.split()[::-1])

转载地址:http://bumji.baihongyu.com/

你可能感兴趣的文章
HTML基础
查看>>
Java IO
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
Java大数据:全文搜索引擎Elasticsearch入门
查看>>
大数据学习:Hadoop入门学习书单
查看>>
大数据学习:Spark SQL入门简介
查看>>
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>