首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何移动字符串中的字符?- Hackerrank挑战

如何移动字符串中的字符?- Hackerrank挑战
EN

Stack Overflow用户
提问于 2020-01-09 07:26:18
回答 3查看 4.7K关注 0票数 1

Hackerrank中的这个挑战是使用Python移动字符串并返回字符串。我有一个接受3个参数的函数。

代码语言:javascript
运行
复制
shiftStrings("string", leftShifts, rightShifts); 

leftShifts & rightShifts是大于0的整数,"string"始终是小写字符。

左移:字符串的单次循环旋转,其中第一个字符成为最后一个字符,所有其他字符左移一个索引。例如,abcde在1次左移位后变为bcdea,在2次左移后变为cdeab。

右移:字符串的单次循环旋转,其中最后一个字符成为第一个字符,所有其他字符都向右移动。例如,abcde在1次右移后变为eabcd,在2次右移后变为deabc。

我只通过了14个测试用例中的4个。这是我的解决方案。请让我知道更好的解决方案。

代码语言:javascript
运行
复制
def getShiftedString(s, leftShifts, rightShifts):
    #    Left shift the string
    l1 = s[0:leftShifts]
    l2 = s[len(s)-leftShifts:]
    s1 = l2+l1
    #    Right shift the string
    r1 = s1[0:len(s)-rightShifts]
    r2 = s1[len(s)-rightShifts:]
    s = r2+r1
    return s
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-01-09 07:49:48

代码语言:javascript
运行
复制
def getShiftedString(s, leftShifts, rightShifts):
    i = (leftShifts - rightShifts) % len(s)
    return s[i:] + s[:i]
票数 3
EN

Stack Overflow用户

发布于 2020-01-09 07:36:01

您应该更改以下行:

代码语言:javascript
运行
复制
l2 = s[len(s)-leftShifts:]

代码语言:javascript
运行
复制
l2 = s[leftShifts:]

您还可以在一行中实现该函数:

代码语言:javascript
运行
复制
def getShiftedString(s, leftShifts, rightShifts):
    return (s*3)[len(s)+rightShifts-leftShifts:2*len(s)+rightShifts-leftShifts]
票数 0
EN

Stack Overflow用户

发布于 2020-11-25 15:04:07

代码语言:javascript
运行
复制
def getShiftedString(s, leftShifts, rightShifts):
    total_shift = leftShifts - rightShifts
    if len(s) < total_shift:
        total_shift = total_shift - len(s)
    if total_shift > 0:
        s = s[total_shift:] + s[:total_shift]
    elif total_shift < 0:
        s = s[total_shift:] + s[:total_shift]
    else:
        return s
    return s
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59655212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档