0

Hackerrank で、この問題に遭遇しました。3つの引数を取る関数があります。例 -->

func getShiftedString(s: String, leftShifts: Int, rightShifts: Int) -> String

左シフト: 最初の文字が最後の文字になり、他のすべての文字が 1 インデックス左にシフトされる、文字列の 1 回の循環回転。たとえば、abcde は 1 回左シフトすると bcdea になり、2 回左シフトすると cdeab になります。

右シフト 最後の文字が最初の文字になり、他のすべての文字が右にシフトされる、文字列の 1 回の循環回転。たとえば、abcde は 1 回右シフトすると eabcd になり、2 回右シフトすると deabc になります。

私はpythonで同じ質問をして、すべてのテストケースに合格しました

def getShiftedString(s, leftShifts, rightShifts):
i=(leftShifts-rightShifts)%len(s)
return s[i:]+s[:i]

そして今、私は同じ質問を迅速に解決しようとしています。以下にソリューションを追加しました

func getShiftedString(s: String, leftShifts: Int, rightShifts: Int) -> String {
// Write your code here
let len = s.count
var i=(leftShifts-rightShifts)%len

let c = s[..<i]
let b = s[i...]
let d = c + b 
return d }

私はこの質問を解決できません。誰でもこれを迅速に解決する方法を教えてもらえますか?

前もって感謝します。

4

2 に答える 2