Skip to content

Commit e1ec93c

Browse files
committed
feat: update solutions to lcci problem: No.01.02
No.01.02.Check Permutation
1 parent a7eb309 commit e1ec93c

File tree

4 files changed

+30
-71
lines changed

4 files changed

+30
-71
lines changed

lcci/01.02.Check Permutation/README.md

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ function CheckPermutation(s1: string, s2: string): boolean {
159159
}
160160
const map = new Map<string, number>();
161161
for (let i = 0; i < n; i++) {
162-
map.set(s1[i], (map.get(s1[i]) || 0) + 1);
163-
map.set(s2[i], (map.get(s2[i]) || 0) - 1);
162+
map.set(s1[i], (map.get(s1[i]) ?? 0) + 1);
163+
map.set(s2[i], (map.get(s2[i]) ?? 0) - 1);
164164
}
165165
for (const v of map.values()) {
166166
if (v !== 0) {
@@ -173,40 +173,27 @@ function CheckPermutation(s1: string, s2: string): boolean {
173173

174174
```ts
175175
function CheckPermutation(s1: string, s2: string): boolean {
176-
if (s1.length !== s2.length) {
177-
return false;
178-
}
179-
return (
180-
s1
181-
.split('')
182-
.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
183-
.join('') ===
184-
s2
185-
.split('')
186-
.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
187-
.join('')
188-
);
176+
return [...s1].sort().join('') === [...s2].sort().join('');
189177
}
190178
```
191179

192180
### **Rust**
193181

194182
```rust
195183
use std::collections::HashMap;
196-
197184
impl Solution {
198185
pub fn check_permutation(s1: String, s2: String) -> bool {
199186
let n = s1.len();
200187
let m = s2.len();
201188
if n != m {
202189
return false;
203190
}
204-
let s1: Vec<char> = s1.chars().collect();
205-
let s2: Vec<char> = s2.chars().collect();
191+
let s1 = s1.as_bytes();
192+
let s2 = s2.as_bytes();
206193
let mut map = HashMap::new();
207194
for i in 0..n {
208-
map.insert(s1[i], map.get(&s1[i]).unwrap_or(&0) + 1);
209-
map.insert(s2[i], map.get(&s2[i]).unwrap_or(&0) - 1);
195+
*map.entry(s1[i]).or_insert(0) += 1;
196+
*map.entry(s2[i]).or_insert(0) -= 1;
210197
}
211198
map.values().all(|i| *i == 0)
212199
}
@@ -216,11 +203,11 @@ impl Solution {
216203
```rust
217204
impl Solution {
218205
pub fn check_permutation(s1: String, s2: String) -> bool {
219-
let mut v1: Vec<char> = s1.chars().collect();
220-
let mut v2: Vec<char> = s2.chars().collect();
221-
v1.sort();
222-
v2.sort();
223-
v1 == v2
206+
let mut s1: Vec<char> = s1.chars().collect();
207+
let mut s2: Vec<char> = s2.chars().collect();
208+
s1.sort();
209+
s2.sort();
210+
s1 == s2
224211
}
225212
}
226213
```

lcci/01.02.Check Permutation/README_EN.md

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ function CheckPermutation(s1: string, s2: string): boolean {
149149
}
150150
const map = new Map<string, number>();
151151
for (let i = 0; i < n; i++) {
152-
map.set(s1[i], (map.get(s1[i]) || 0) + 1);
153-
map.set(s2[i], (map.get(s2[i]) || 0) - 1);
152+
map.set(s1[i], (map.get(s1[i]) ?? 0) + 1);
153+
map.set(s2[i], (map.get(s2[i]) ?? 0) - 1);
154154
}
155155
for (const v of map.values()) {
156156
if (v !== 0) {
@@ -163,40 +163,27 @@ function CheckPermutation(s1: string, s2: string): boolean {
163163

164164
```ts
165165
function CheckPermutation(s1: string, s2: string): boolean {
166-
if (s1.length !== s2.length) {
167-
return false;
168-
}
169-
return (
170-
s1
171-
.split('')
172-
.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
173-
.join('') ===
174-
s2
175-
.split('')
176-
.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
177-
.join('')
178-
);
166+
return [...s1].sort().join('') === [...s2].sort().join('');
179167
}
180168
```
181169

182170
### **Rust**
183171

184172
```rust
185173
use std::collections::HashMap;
186-
187174
impl Solution {
188175
pub fn check_permutation(s1: String, s2: String) -> bool {
189176
let n = s1.len();
190177
let m = s2.len();
191178
if n != m {
192179
return false;
193180
}
194-
let s1: Vec<char> = s1.chars().collect();
195-
let s2: Vec<char> = s2.chars().collect();
181+
let s1 = s1.as_bytes();
182+
let s2 = s2.as_bytes();
196183
let mut map = HashMap::new();
197184
for i in 0..n {
198-
map.insert(s1[i], map.get(&s1[i]).unwrap_or(&0) + 1);
199-
map.insert(s2[i], map.get(&s2[i]).unwrap_or(&0) - 1);
185+
*map.entry(s1[i]).or_insert(0) += 1;
186+
*map.entry(s2[i]).or_insert(0) -= 1;
200187
}
201188
map.values().all(|i| *i == 0)
202189
}
@@ -206,11 +193,11 @@ impl Solution {
206193
```rust
207194
impl Solution {
208195
pub fn check_permutation(s1: String, s2: String) -> bool {
209-
let mut v1: Vec<char> = s1.chars().collect();
210-
let mut v2: Vec<char> = s2.chars().collect();
211-
v1.sort();
212-
v2.sort();
213-
v1 == v2
196+
let mut s1: Vec<char> = s1.chars().collect();
197+
let mut s2: Vec<char> = s2.chars().collect();
198+
s1.sort();
199+
s2.sort();
200+
s1 == s2
214201
}
215202
}
216203
```
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
impl Solution {
22
pub fn check_permutation(s1: String, s2: String) -> bool {
3-
let mut v1: Vec<char> = s1.chars().collect();
4-
let mut v2: Vec<char> = s2.chars().collect();
5-
v1.sort();
6-
v2.sort();
7-
v1 == v2
3+
let mut s1: Vec<char> = s1.chars().collect();
4+
let mut s2: Vec<char> = s2.chars().collect();
5+
s1.sort();
6+
s2.sort();
7+
s1 == s2
88
}
99
}
Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,3 @@
11
function CheckPermutation(s1: string, s2: string): boolean {
2-
const n = s1.length;
3-
const m = s2.length;
4-
if (n !== m) {
5-
return false;
6-
}
7-
const map = new Map<string, number>();
8-
for (let i = 0; i < n; i++) {
9-
map.set(s1[i], (map.get(s1[i]) || 0) + 1);
10-
map.set(s2[i], (map.get(s2[i]) || 0) - 1);
11-
}
12-
for (const v of map.values()) {
13-
if (v !== 0) {
14-
return false;
15-
}
16-
}
17-
return true;
2+
return [...s1].sort().join('') === [...s2].sort().join('');
183
}

0 commit comments

Comments
 (0)