Skip to content

Commit 6356387

Browse files
committed
feat: add solutions to lc problem: No.2299
No.2299.Strong Password Checker II
1 parent 87bb9ec commit 6356387

File tree

4 files changed

+173
-0
lines changed

4 files changed

+173
-0
lines changed

solution/2200-2299/2299.Strong Password Checker II/README.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,67 @@ function strongPasswordCheckerII(password: string): boolean {
204204
}
205205
```
206206

207+
### **Rust**
208+
209+
```rust
210+
impl Solution {
211+
pub fn strong_password_checker_ii(password: String) -> bool {
212+
let s = password.as_bytes();
213+
let n = password.len();
214+
if n < 8 {
215+
return false;
216+
}
217+
let mut mask = 0;
218+
let mut prev = b' ';
219+
for &c in s.iter() {
220+
if c == prev {
221+
return false;
222+
}
223+
mask |= if c.is_ascii_uppercase() {
224+
0b1000
225+
} else if c.is_ascii_lowercase() {
226+
0b100
227+
} else if c.is_ascii_digit() {
228+
0b10
229+
} else {
230+
0b1
231+
};
232+
prev = c;
233+
}
234+
mask == 0b1111
235+
}
236+
}
237+
```
238+
239+
### **C**
240+
241+
```c
242+
bool strongPasswordCheckerII(char *password) {
243+
int n = strlen(password);
244+
if (n < 8) {
245+
return false;
246+
}
247+
int mask = 0;
248+
char prev = ' ';
249+
for (int i = 0; i < n; i++) {
250+
if (prev == password[i]) {
251+
return false;
252+
}
253+
if (islower(password[i])) {
254+
mask |= 0b1000;
255+
} else if (isupper(password[i])) {
256+
mask |= 0b100;
257+
} else if (isdigit(password[i])) {
258+
mask |= 0b10;
259+
} else {
260+
mask |= 0b1;
261+
}
262+
prev = password[i];
263+
}
264+
return mask == 0b1111;
265+
}
266+
```
267+
207268
### **...**
208269
209270
```

solution/2200-2299/2299.Strong Password Checker II/README_EN.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,67 @@ function strongPasswordCheckerII(password: string): boolean {
187187
}
188188
```
189189

190+
### **Rust**
191+
192+
```rust
193+
impl Solution {
194+
pub fn strong_password_checker_ii(password: String) -> bool {
195+
let s = password.as_bytes();
196+
let n = password.len();
197+
if n < 8 {
198+
return false;
199+
}
200+
let mut mask = 0;
201+
let mut prev = b' ';
202+
for &c in s.iter() {
203+
if c == prev {
204+
return false;
205+
}
206+
mask |= if c.is_ascii_uppercase() {
207+
0b1000
208+
} else if c.is_ascii_lowercase() {
209+
0b100
210+
} else if c.is_ascii_digit() {
211+
0b10
212+
} else {
213+
0b1
214+
};
215+
prev = c;
216+
}
217+
mask == 0b1111
218+
}
219+
}
220+
```
221+
222+
### **C**
223+
224+
```c
225+
bool strongPasswordCheckerII(char *password) {
226+
int n = strlen(password);
227+
if (n < 8) {
228+
return false;
229+
}
230+
int mask = 0;
231+
char prev = ' ';
232+
for (int i = 0; i < n; i++) {
233+
if (prev == password[i]) {
234+
return false;
235+
}
236+
if (islower(password[i])) {
237+
mask |= 0b1000;
238+
} else if (isupper(password[i])) {
239+
mask |= 0b100;
240+
} else if (isdigit(password[i])) {
241+
mask |= 0b10;
242+
} else {
243+
mask |= 0b1;
244+
}
245+
prev = password[i];
246+
}
247+
return mask == 0b1111;
248+
}
249+
```
250+
190251
### **...**
191252
192253
```
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
bool strongPasswordCheckerII(char *password) {
2+
int n = strlen(password);
3+
if (n < 8) {
4+
return false;
5+
}
6+
int mask = 0;
7+
char prev = ' ';
8+
for (int i = 0; i < n; i++) {
9+
if (prev == password[i]) {
10+
return false;
11+
}
12+
if (islower(password[i])) {
13+
mask |= 0b1000;
14+
} else if (isupper(password[i])) {
15+
mask |= 0b100;
16+
} else if (isdigit(password[i])) {
17+
mask |= 0b10;
18+
} else {
19+
mask |= 0b1;
20+
}
21+
prev = password[i];
22+
}
23+
return mask == 0b1111;
24+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
impl Solution {
2+
pub fn strong_password_checker_ii(password: String) -> bool {
3+
let s = password.as_bytes();
4+
let n = password.len();
5+
if n < 8 {
6+
return false;
7+
}
8+
let mut mask = 0;
9+
let mut prev = b' ';
10+
for &c in s.iter() {
11+
if c == prev {
12+
return false;
13+
}
14+
mask |= if c.is_ascii_uppercase() {
15+
0b1000
16+
} else if c.is_ascii_lowercase() {
17+
0b100
18+
} else if c.is_ascii_digit() {
19+
0b10
20+
} else {
21+
0b1
22+
};
23+
prev = c;
24+
}
25+
mask == 0b1111
26+
}
27+
}

0 commit comments

Comments
 (0)