Skip to content

Commit ba1778c

Browse files
committed
feat: add solutions to lcci problem: No.01.02
No.01.02.Check Permutation
1 parent fd3315d commit ba1778c

File tree

4 files changed

+182
-0
lines changed

4 files changed

+182
-0
lines changed

lcci/01.02.Check Permutation/README.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,83 @@ public:
141141
};
142142
```
143143
144+
### **TypeScript**
145+
146+
```ts
147+
function CheckPermutation(s1: string, s2: string): boolean {
148+
const n = s1.length;
149+
const m = s2.length;
150+
if (n !== m) {
151+
return false;
152+
}
153+
const map = new Map<string, number>();
154+
for (let i = 0; i < n; i++) {
155+
map.set(s1[i], (map.get(s1[i]) || 0) + 1);
156+
map.set(s2[i], (map.get(s2[i]) || 0) - 1);
157+
}
158+
for (const v of map.values()) {
159+
if (v !== 0) {
160+
return false;
161+
}
162+
}
163+
return true;
164+
}
165+
```
166+
167+
```ts
168+
function CheckPermutation(s1: string, s2: string): boolean {
169+
if (s1.length !== s2.length) {
170+
return false;
171+
}
172+
return (
173+
s1
174+
.split('')
175+
.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
176+
.join('') ===
177+
s2
178+
.split('')
179+
.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
180+
.join('')
181+
);
182+
}
183+
```
184+
185+
### **Rust**
186+
187+
```rust
188+
use std::collections::HashMap;
189+
190+
impl Solution {
191+
pub fn check_permutation(s1: String, s2: String) -> bool {
192+
let n = s1.len();
193+
let m = s2.len();
194+
if n != m {
195+
return false;
196+
}
197+
let s1: Vec<char> = s1.chars().collect();
198+
let s2: Vec<char> = s2.chars().collect();
199+
let mut map = HashMap::new();
200+
for i in 0..n {
201+
map.insert(s1[i], map.get(&s1[i]).unwrap_or(&0) + 1);
202+
map.insert(s2[i], map.get(&s2[i]).unwrap_or(&0) - 1);
203+
}
204+
map.values().all(|i| *i == 0)
205+
}
206+
}
207+
```
208+
209+
```rust
210+
impl Solution {
211+
pub fn check_permutation(s1: String, s2: String) -> bool {
212+
let mut v1: Vec<char> = s1.chars().collect();
213+
let mut v2: Vec<char> = s2.chars().collect();
214+
v1.sort();
215+
v2.sort();
216+
v1 == v2
217+
}
218+
}
219+
```
220+
144221
### **...**
145222

146223
```

lcci/01.02.Check Permutation/README_EN.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,84 @@ public:
139139
};
140140
```
141141
142+
### **TypeScript**
143+
144+
```ts
145+
function CheckPermutation(s1: string, s2: string): boolean {
146+
const n = s1.length;
147+
const m = s2.length;
148+
if (n !== m) {
149+
return false;
150+
}
151+
const map = new Map<string, number>();
152+
for (let i = 0; i < n; i++) {
153+
map.set(s1[i], (map.get(s1[i]) || 0) + 1);
154+
map.set(s2[i], (map.get(s2[i]) || 0) - 1);
155+
}
156+
for (const v of map.values()) {
157+
if (v !== 0) {
158+
return false;
159+
}
160+
}
161+
return true;
162+
}
163+
```
164+
165+
```ts
166+
function CheckPermutation(s1: string, s2: string): boolean {
167+
if (s1.length !== s2.length) {
168+
return false;
169+
}
170+
return (
171+
s1
172+
.split('')
173+
.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
174+
.join('') ===
175+
s2
176+
.split('')
177+
.sort((a, b) => a.charCodeAt(0) - b.charCodeAt(0))
178+
.join('')
179+
);
180+
}
181+
```
182+
183+
### **Rust**
184+
185+
```rust
186+
use std::collections::HashMap;
187+
188+
impl Solution {
189+
pub fn check_permutation(s1: String, s2: String) -> bool {
190+
let n = s1.len();
191+
let m = s2.len();
192+
if n != m {
193+
return false;
194+
}
195+
let s1: Vec<char> = s1.chars().collect();
196+
let s2: Vec<char> = s2.chars().collect();
197+
let mut map = HashMap::new();
198+
for i in 0..n {
199+
map.insert(s1[i], map.get(&s1[i]).unwrap_or(&0) + 1);
200+
map.insert(s2[i], map.get(&s2[i]).unwrap_or(&0) - 1);
201+
}
202+
map.values().all(|i| *i == 0)
203+
}
204+
}
205+
```
206+
207+
```rust
208+
impl Solution {
209+
pub fn check_permutation(s1: String, s2: String) -> bool {
210+
let mut v1: Vec<char> = s1.chars().collect();
211+
let mut v2: Vec<char> = s2.chars().collect();
212+
v1.sort();
213+
v2.sort();
214+
v1 == v2
215+
}
216+
}
217+
```
218+
219+
142220
### **...**
143221

144222
```
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
impl Solution {
2+
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
8+
}
9+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
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;
18+
}

0 commit comments

Comments
 (0)