面试题记录 -- 反转字符串中的单词;

给定一个字符串: let's be the best friends !
希望输出字符串:  s'tel eb eht tseb sdneirf !
要求:对字符串做处理,实现单词的反转,反转之后的结果要保持各个单词的顺序,同时保持单词间的空格;

解题思路:
1、首先获取各个字符串的单词(或者叫子串);
2、然后将各个子串进行反转输出;
考察内容:
1、如何对给定的字符串做处理,并获得各个子串;  【比较容易想到的:通过split方法,将字符串截取成一个个子串】
2、如果对子串进行反转输出; 【比较容易想到的:通过字符串的切片操作实现反向输出】
具体实现:
#coding=utf-8
import os

def reverse_word(s):
    # 切片字符串为子串;
    s = s.split(' ')
    s_temp = ''
    # 遍历子串列表,并依次逆向输出
    for item in s:
        s_temp = s_temp + item[::-1] + ' '
    print s_temp
    
if __name__ == '__main__':
    s = "let's be the best friends !"
    reverse_word(s)
考察内容讲解:
1、字符串的 split 函数
1)split 函数是Python 字符串处理函数,
主要实现: 通过指定分隔符,对字符串进行分割切片;
处理结果: 最终结果为列表,将切片后的子串保存到列表中,并返回最终形成的子串的列表;
2)split 语法 :  split("分隔符", "分割次数")
其中,
参数『分隔符』表示:  用于确定分割的位置;  默认使用『空格、换行(\n)、制表符(\t)』
参数『分割次数』表示  切割几次;  默认分割所有的子串;
s = "hello#world everybody hello#hhhhh"
s.split('#')     // 输出结果为:[hello, world everybody hello, hhhhh]
s.split('#', 1)  // 输出结果为: [hello, world everybody hello#hhhhh]   只用分隔符#,进行一次分割;
s.split()        // 输出结果为: [hello#world, everybody, hello#hhhhh]   参数分隔符省略,则默认使用空格、换行符和制表符进行分割,这里是空格;  参数分割次数省略,则默认分割所有
3)题目中的split讲解:
题目中,split 分隔符为空格,则原字符串会按照空格,进行切分,正好将各个单词切分出来;
split 切分后的结果是保存到列表中的, 故执行 s = s.split(' ') 之后, s  为一个列表,如果输出此时的s ,应该为: ["let's", 'be', 'the', 'best', 'friends', '!']
split 切片后的列表正好可以进行遍历操作,这样就可以通过遍历每个单词,从而对每个单词进行处理;
4)额外的思维:
从这里,突然想到,后续涉及到字符串获取子串的操作,应该都可以通过split 函数进行切片实现, 切片后的各个子串,以列表的形式保存,也可以通过下标自由获取;

2、字符串的切片操作
1) 字符串切片的语法为:  str[start: end: step]    (注意是中括号冒号分割)
start: 表示切片开始的下标; 0表示第一个; -1 表示最后一个;
end:   表示切片的终止位置,但不包括该位置;
step:  表示切片的 step 和方向; 正数表示从右到左,负数表示从左到右;
s = "friends"
s[::1]   // 正向输出串,从0开始,直到结束; 结果为:'friends'
s[::-1]  // 逆向输出串,从-1开始,直到结束;结果为:'sdneirf'
s[0:5:1]  // 正向输出串,从0开始,输出到index为5的位置,其中index=5不输出; 结果为:'frien'
s[-1:5:-2] // 输出结果为:'s'
  // 逆向输出串,从-1开始,输出到index为5的位置,index=5不输出,应该是'ds', step=2,则只输出's'
s[-1:-5:-2] // 输出结果为: 'sn'
  // 逆向输出串, 从-1开始,输出到index为-5的位置,index=-5不输出,应该是'sdne', step=2, 则只输出'sn'
    

全部评论

相关推荐

老粉都知道小猪猪我很久没更新了,因为秋招非常非常不顺利,emo了三个月了,接下来说一下我的情况吧本人是双非本 专业是完全不着计算机边的非科班,比较有优势的是有两段大厂实习,美团和字节。秋招面了50+场泡池子泡死的:滴滴 快手 去哪儿 小鹏汽车 不知名的一两个小厂其中字节13场 两次3面挂 两次2面挂 一次一面挂其中有2场面试题没写出来,其他的都是全a,但该挂还是挂,第三次三面才面进去字节,秋招加暑期总共面了22次字节,在字节的面评可以出成书了快手面了8场,2次实习的,通过了但没去,一次2面挂 最后一次到录用评估 至今无消息滴滴三面完 没几天挂了 所有技术面找不出2个问题是我回答不上来的,三面还来说我去过字节,应该不会考虑滴滴吧,直接给我干傻了去哪儿一天速通 至今无消息小鹏汽车hr 至今无消息美团2面挂 然后不捞我了,三个志愿全部结束,估计被卡学历了虾皮二面挂 这个是我菜,面试官太牛逼了拼多多二面挂 3道题也全写了 也没问题是回答不出来的 泡一周后挂腾讯面了5次 一次2面挂 三次一面挂,我宣布腾讯是世界上最难进的互联网公司然后还有一些零零散散的中小厂,但是数量比较少,约面大多数都是大厂。整体的战况非常惨烈,面试机会少,就算面过了也需要和各路神仙横向对比,很多次我都是那个被比下去的人,不过这也正常,毕竟谁会放着一个985的硕士不招,反而去招一个双非读化学的小子感觉现在互联网对学历的要求越来越高了,不仅仅要985还要硕士了,双非几乎没啥生存空间了,我感觉未来几年双非想要进大厂开发的难度应该直线上升了,唯一的打法还是从大二刷实习,然后苟个转正,不然要是去秋招大概率是炮灰。而且就我面字节这么多次,已经开始问很多ai的东西了,你一破本科生要是没实习没科研懂什么ai啊,纯纯白给了
不知名牛友_:爸爸
秋招你被哪家公司挂了?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务