Leetcode 30 천도위, Week 2 Day 7, Perform String Shifts, in Swift

6965 단어 Swiftleetcode
자료 상당 혹은 연산법: String Math
  • 도전 페이지 - h tps : // / ㅇ t 여기. 코 m / 에 xp ㄉ 레 / 짱 게 / rd / 30-이다 y ぇ t 굿 g 짱 게 / 529 / 우에 k 2 / 3299 /

  • 這一題 호상 시신적, 환沒有原先題目頁面.

    사유



    這題應当該算是數學歸納的問題、步驟說明、演算法有更好解 혹은 시複雜度分析有問題的話都請留言告訴我.

    步驟


  • 산출 최종 이동적 방향(개념 화전 일천적 제목 상동, 제목 필기 노후 재보)
  • 왕좌취 -1 , 왕우취 +1

  • 總部數是 0 就直接回傳
  • 인위 이동 초과자 꼬리 장도 후 취회 개시 순환 추동의적 사정, 시정 이후 꼬치 장도 취득 數數
  • 根據分析 會發現 (往左 + 字串長度)
  • 접저 1개 1개 파 마지막 1개자 전왕전 이동 도달 전면
  • 생성자 꼬치 부동산 회

  • 정식 碼


    class Solution {
        func stringShift(_ s: String, _ shift: [[Int]]) -> String {
            if s.count <= 1 { return s }
    
            var moves = 0
    
            // 取得算出所有移動後的最終步數
            for pair in shift {
                var direction = pair[0]
                var steps = pair[1]
                switch direction {
                    case 0: moves -= steps
                    case 1: moves += steps
                    default: break
                }
            }
    
            // 為零就直接回傳
            if moves == 0 { return s }
    
            // 必要之惡
            var characters = Array(s)
            var length = characters.count
    
            // 把步數正規化到 -length + 1 到 length - 1 之間
            moves %= length
    
            // 若步數為負值,把它轉換成相對應的正值
            if moves < 0 {
                moves += length
            }
    
            // 移動...移動...移動...
            while moves > 0 && moves <= length {
                characters.insert(characters.removeLast(), at: 0)
                moves -= 1
            }
    
            return String(characters)
        }
    }
    

    고층 하함



    여과 열애 고층 하함적 이야기, 가이파 산출 최종 음계적 지방 개성
    var moves = shift.reduce(0) { $0 + ($1[0] == 0 ? -1 : 1 ) * $1[1] }
    

    상정 파정식 碼整體變短還有更激진적 做法, 不過會大大降低程式 碼的可讀性在這邊就不繼灌做了.

    복도 분석


  • 시간 복도: O(max(s.length, shift.length))
  • 전부 집행도 시유층 迴圈, 인此就看 누적 계량 비교 다.

  • 공간 복도: O(s.length)
  • 轉成 characters 應当該是必要之惡(白白眼)


  • 결과



    과거의 시간 후 혼 모토 부족 요인 무법 지도 재기 부적 지방
    Runtime: 8 ms
    Memory Usage: 21.6 MB
    

    개성 고층 하함적 운행 결과 여하(是壞掉了?)



    자기 Testcase



    직접 부착도타 제공적 框框裡面即可
    "abc"
    [[0,1],[1,2]]
    "abcdefg"
    [[1,1],[1,1],[0,2],[1,3]]
    "wpdhhcj"
    [[0,7],[1,7],[1,0],[1,3],[0,3],[0,6],[1,2]]
    

    좋은 웹페이지 즐겨찾기