LeetCode 796. Rotate String
Question
Given two strings s and goal, return true if and only if s can become goal after some number of shifts on s.
A shift on s consists of moving the leftmost character of s to the rightmost position.
For example, if s = "abcde", then it will be "bcdea" after one shift.
두 문자열 s와gooal을 주었을 때 s로 몇 번 이동한 후에 s가goal이 될 수 있을 때만 진짜로 되돌아온다.s의 위치 이동은 s의 왼쪽 문자를 오른쪽으로 이동하는 것이다.
예를 들어 s="abcde"라면, 1번으로 "bcdea"로 이동합니다.
Code
class Solution {
fun rotateString(s: String, goal: String): Boolean {
if (s.length != goal.length) return false
val b = StringBuilder(s)
for (char in s) {
b.deleteCharAt(0)
b.append(char)
if (b.toString().contains(goal)) return true
}
return false
}
}
class Solution {
fun rotateString(s: String, goal: String): Boolean {
return s.length == goal.length && (s + s).contains(goal)
}
}
문자열의 결합에서 String+String은 매번 대상을 생성하는데, 비용이 되기 위해 StringBuilder를 사용하는 것은 고정적이다문자열 s를 StringBuilder로 복사하여 시작과 끝을 삭제하는 동시에
골과 일치해서 끝냅니다.
두 번째는 솔루션 소개
같은 문자열 두 개를 만들면 실제로는 찾을 수 있다
똑똑하다고 생각했지만 시간 계산량은 O(n^2)로 바뀌었다.확실하다
실행해보면 이쪽 성적이 더 좋아...
Profile
StringBuilder
s+s.contain
Submission
Reference
이 문제에 관하여(LeetCode 796. Rotate String), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/az/articles/4c0a21d6f86ef3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)