Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何移动字符串中的字符?-黑客挑战_Python_String - Fatal编程技术网

Python 如何移动字符串中的字符?-黑客挑战

Python 如何移动字符串中的字符?-黑客挑战,python,string,Python,String,Hackerrank中的挑战是使用Python移动字符串并返回字符串。我有一个接受3个参数的函数 shiftStrings("string", leftShifts, rightShifts); leftShifts&rightShifts为整数>0,“字符串”始终为小写字符 左移:字符串的单个循环旋转,其中第一个字符变为最后一个字符,所有其他字符向左移动一个索引。例如,abcde在左移1次后变为bcdea,而cdeab在左移2次后变为cdeab 右移:字符串的单个循环旋转,其中最后一个字符

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

shiftStrings("string", leftShifts, rightShifts); 
leftShifts
&
rightShifts
为整数>0,
“字符串”
始终为小写字符

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

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

我只通过了14个测试用例中的4个。这是我的解决办法。请告诉我更好的解决办法

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

您应该更改以下行:

l2 = s[len(s)-leftShifts:]

您还可以在一行中实现该功能:

def getShiftedString(s, leftShifts, rightShifts):
    return (s*3)[len(s)+rightShifts-leftShifts:2*len(s)+rightShifts-leftShifts]
def getShiftedString(s、leftShifts、righshifts):
总移位=左移位-右移位
如果len(s)<总移位:
总移位=总移位-长度
如果总移位>0:
s=s[总移位:][s[:总移位]
elif总位移<0:
s=s[总移位:][s[:总移位]
其他:
返回s
返回s

到底是什么问题?这是我的解决办法。请让我知道更好的解决方案你真的希望人们为你做一切吗?变量和函数名称通常应遵循带有下划线的
小写形式。我尝试了下面的输入,但输出不符合预期。shift=getShiftedString('abcdefghijklmnopqrstuv',5,2)打印(shift)是,更改l2=s[leftshift:]按预期工作
def getShiftedString(s, leftShifts, rightShifts):
    return (s*3)[len(s)+rightShifts-leftShifts:2*len(s)+rightShifts-leftShifts]
def getShiftedString(s, leftShifts, rightShifts):
    i = (leftShifts - rightShifts) % len(s)
    return s[i:] + s[:i]
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