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

将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])

【剑指offer】面试题42:单词翻转顺序&左右旋转字符串的更多相关文章

  1. 剑指Offer:面试题14——调整数组顺序使奇数位于偶数前面(java实现)

    问题描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 思路: 1.最简单的想法,不考虑时间复杂度,扫描数组,遇到偶数,先取出这 ...

  2. 剑指Offer面试题:34.翻转单词顺序VS左旋转字符串

    一.题目一:翻转单词顺序 1.1 题目说明 题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a st ...

  3. 剑指offer(44)单词翻转序列

    题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ...

  4. 剑指offer面试题14-调整数组顺序使奇数位于偶数前面

    题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得全部奇数位于数组的前半部分.全部偶数位于数组的后半部分. 前后分的这个.,让我想起来高速排序.好吧,就用这个做. 考虑到了排序的可扩 ...

  5. C++版 - 剑指offer面试题14: 调整数组顺序使奇数位于偶数前面

    题目: 调整数组顺序使奇数位于偶数前面 热度指数:11843 时间限制:1秒 空间限制:32768K 本题知识点: 数组 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇 ...

  6. 剑指offer 面试题. 按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推.   方法1: 正常层次遍历,利用普通队列.逢 ...

  7. 剑指offer——python【第43题】左旋转字符串

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...

  8. 【剑指Offer面试题】 九度OJ1518:反转链表

    与其非常快写出一段漏洞百出的代码,倒不如细致分析再写出鲁棒的代码. 提前想好測试用例(输入非空等等)进行測试改动代码. 题目链接地址: http://ac.jobdu.com/problem.php? ...

  9. 剑指Offer:面试题15——链表中倒数第k个结点(java实现)

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...

随机推荐

  1. *lucene索引_的删除和更新

    [删除] [恢复删除] [强制删除] [优化和合并] [更新索引] 附: 代码: IndexUtil.java: package cn.hk.index; import java.io.File; i ...

  2. JSP行为

    JSP行为标签使用XML语法结构来控制servlet引擎.它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等.行为标签只有一种语法格式,它严格 ...

  3. python类中__unicode__和__str__方法的妙用

    在python类中有个__str__的特殊方法,该方法可以使print打印出来的东西更美观,在类里就可以定义,如下代码: class Test: def __init__(self, name, jo ...

  4. P2866 糟糕的一天

    糟糕的一天 洛谷链接 挺水的一道题,也就是看每个数后面有多少数比它小,最后把总数加起来. 我们可以用单调栈来实现,并用一个数组来保存每个数现在的状态. 代码: #include<cstdio&g ...

  5. hdu 1563简单异或Find your present!

    #include<stdio.h> int  main(){  int n,m,s;  while(scanf("%d",&n),n) {   s=0;   w ...

  6. Java SSH框架系列:用户登录模块的设计与实现思路

    1.简介用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问.二.简单设计及实现本程序是基于Jav ...

  7. OpenJudge 6042 雇佣兵

    37:雇佣兵 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 雇佣兵的体力最大值为M,初始体力值为0.战斗力为N.拥有X个能量元素. 当雇佣兵的体力值恰好为M时,才可以参加一个 ...

  8. APP后端处理视频的方案

    在当前的app应用中,到处都能看到视频的身影,例如,在社交类的app上,用户可以拍摄属于自己的小视频,并发布到相应得栏目,增加和好友们互动的机会. 后台常见的视频处理有以下几种: ·          ...

  9. 2018 江苏省邀请赛 H

    题目链接 https://nanti.jisuanke.com/t/28872 解析 递推 直接套杜教板子 AC代码 #include <cstdio> #include <cstr ...

  10. 删除,“windows setup 启用EMS”

    方案1[笔者推荐]:进入Windows后按Windows+R输入msconfig回车进入系统配置,切换到引导,点击你要删除的选项然后点击删除就行[1].