Algorithm
[LeetCode/Swift] 383. Ransom Note
개발자 수니
2024. 1. 17. 15:10
728x90
반응형
💡 문제 (Easy)
Given two strings 'ransomNote' and 'magazine', return true if 'ransomNote' can be constructed by using the letters from 'magazine' and false otherwise.
Each letter in 'magazine' can only be used once in 'ransomNote'.
두 개의 문자열 ransomNote와 magazine가 주어졌을 때, ransomNote를 magazine의 문자들을 이용하여 만들 수 있으면 True를 반환하고, 그렇지 않으면 False를 반환하는 함수를 작성해야 합니다.
여기서 주의할 점은 magazine의 각 문자는 ransomNote에서 한 번만 사용될 수 있다는 것입니다.
Example 1:
Input: ransomNote = "a", magazine = "b"
Output: false
Example 2:
Input: ransomNote = "aa", magazine = "ab"
Output: false
Example 3:
Input: ransomNote = "aa", magazine = "aab"
Output: true
Constraints:
- 1 <= ransomNote.length, magazine.length <= 105
- ransomNote and magazine consist of lowercase English letters.
👩🏻💻 해결
1차 firstIndex를 사용하여 글자를 지우는 방법
공간 복잡도 O(n) / 시간 복잡도 O(n)
class Solution {
func canConstruct(_ ransomNote: String, _ magazine: String) -> Bool {
var copy = magazine
for letter in ransomNote {
if let index = copy.firstIndex(of: letter) {
copy.remove(at: index)
} else {
return false
}
}
return true
}
}
728x90
반응형