-
Notifications
You must be signed in to change notification settings - Fork 41
/
242.swift
58 lines (45 loc) · 1.22 KB
/
242.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//
// 242.swift
// LeetCode
//
// Created by Lex on 12/22/15.
// Copyright © 2015 Lex Tang. All rights reserved.
//
/*
Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
Note:
You may assume the string contains only lowercase alphabets.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
*/
import Foundation
import XCTest
func isAnagram(_ s: String, _ t: String) -> Bool {
// They must have the same size
if s.count != t.count {
return false
}
var src = s
t.forEach {
if let charRange = src.range(of: String($0)) {
src.remove(at: charRange.lowerBound)
}
}
if src.count == 0 {
return true
}
return false
}
class ValidAnagramTest: XCTestCase {
func testIsAnagram() {
XCTAssert(isAnagram("anagram", "nagaram"))
XCTAssert(isAnagram("rat", "tar"))
XCTAssert(isAnagram("贪吃蛇", "蛇贪吃"))
XCTAssert(isAnagram("🤕⌚️👽", "👽🤕⌚️"))
XCTAssert(!isAnagram("🤕⌚️A", "👽🤕⌚️"))
}
}