题解 | #字符串变形#

字符串变形

https://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param s string字符串 
# @param n int整型 
# @return string字符串
#
class Solution:
    def trans(self , s: str, n: int) -> str:
        # write code here
        # start = 1 if s.startswith(' ') else 0
        # end = 1 if s.endswith(' ') else 0
        # s = s.strip()
        s = s[::-1]
        # 全部反转
        s = s.swapcase()
        # 大小写互换
        ls = list(s)
        result = []
        flag = 0
        # flag用来标记空格,判断是直接加入还是反转再加入
        j = 0
        # 记录切片的起点
        for i in range(n):
            if ls[i] != ' ':
                flag = 1
                # flag为1说明此处不是一个空格
                if i == n-1:
                    result.append(''.join(reversed(s[j:])))
                # 在遍历结束时如果没有遇到空格,就把剩下的一个单词反转加入列表
            elif ls[i] == ' ' and flag == 0:
                # flag为0且遍历到一个空格,说明是连续空格,直接将空格加入列表即可
                result.append(ls[i])
                j = i + 1
                # 切片以下一个字符为起点
            elif ls[i] == ' ' and flag == 1:
                # flag为1且遍历到一个空格,说明一个单词已经遍历结束,将该单词反转加入列表
                result.append(''.join(reversed(s[j:i])))
                result.append(' ')
                j = i + 1
                # 切片以下一个字符为起点
                flag = 0
                # flag设置为0,说明刚刚有一个单词加入列表
        return ''.join(result)

全部评论

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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