题解 | 字符串展开

字符串展开

https://www.nowcoder.com/practice/7fea6add1afa4d91ad71b3a3f4032880

def solve(testcase):
    a, b, c = MI()

    s = I()
    n = len(s)

    res = []

    for i, ch in enumerate(s):
        if ch != '-':
            res.append(ch)
        else:
            if i and s[i - 1].isdigit() and i + 1 < n and s[i + 1].isdigit():
                l, r = int(s[i - 1]), int(s[i + 1])
                if l < r:
                    if c == 1:
                        if a != 3:
                            for j in range(l + 1, r):
                                res.append(str(j) * b)
                        else:
                            for j in range(l + 1, r):
                                res.append('*' * b)
                    else:
                        if a != 3:
                            for j in range(r - 1, l, -1):
                                res.append(str(j) * b)
                        else:
                            for j in range(l + 1, r):
                                res.append('*' * b)
                else:
                    res.append('-')
            elif i and s[i - 1].isalpha() and i + 1 < n and s[i + 1].isalpha():
                l, r = ord(s[i - 1]) - 97, ord(s[i + 1]) - 97
                if l < r:
                    if c == 1:
                        if a == 1:
                            for j in range(l + 1, r):
                                res.append(chr(97 + j) * b)
                        elif a == 2:
                            for j in range(l + 1, r):
                                res.append(chr(65 + j) * b)
                        else:
                            for j in range(l + 1, r):
                                res.append('*' * b)
                    else:
                        if a == 1:
                            for j in range(r - 1, l, -1):
                                res.append(chr(97 + j) * b)
                        elif a == 2:
                            for j in range(r - 1, l, -1):
                                res.append(chr(65 + j) * b)
                        else:
                            for j in range(r - 1, l, -1):
                                res.append('*' * b)
                else:
                    res.append('-')
            else:
                res.append('-')
        
    
    print(''.join(res))
                        

for testcase in range(1):
    solve(testcase)

全部评论

相关推荐

用微笑面对困难:你出于礼貌叫了人一声大姐,大姐很欣慰,她真把你当老弟
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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