Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ Π½Π°Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° Π·Π°Π΄Π°ΡΠ° Π½Π° Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ 2337. Move Pieces to Obtain a String.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ
ΠΠ°Π½Ρ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ start
ΠΈ target
Π΄Π»ΠΈΠ½Ρ n
, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ 'L'
, 'R'
ΠΈ '_'
.
- Π‘ΠΈΠΌΠ²ΠΎΠ»
'L'
ΠΌΠΎΠΆΠ΅Ρ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π»Π΅Π²ΠΎ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΏΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ('_'
) ΡΠ»Π΅Π²Π°.
- Π‘ΠΈΠΌΠ²ΠΎΠ»
'R'
ΠΌΠΎΠΆΠ΅Ρ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΏΡΠ°Π²ΠΎ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ ΠΏΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ('_'
) ΡΠΏΡΠ°Π²Π°.
- ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΡ
start
Π² ΡΡΡΠΎΠΊΡ target
Ρ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡ
ΠΏΡΠ°Π²ΠΈΠ».
ΠΠ΄Π΅Ρ π§
ΠΠ°Π΄Π°ΡΠ° ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π»ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² 'L'
ΠΈ 'R'
Π² Π΄Π²ΡΡ
ΡΡΡΠΎΠΊΠ°Ρ
Ρ ΡΡΡΡΠΎΠΌ ΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ 'L'
ΠΈ 'R'
ΡΠ΅ΡΠ΅Π· ΡΡΡΡΡΠΈΠΊΠΈ.
ΠΠΎΠ΄Ρ
ΠΎΠ΄ π οΈ
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄
as_bytes()
, ΡΡΠΎΠ±Ρ Π±ΡΡΡΡΠΎ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² Π²ΠΈΠ΄Π΅ Π±Π°ΠΉΡΠΎΠ².
- ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΠΎΠ±Π΅ΠΈΠΌ ΡΡΡΠΎΠΊΠ°ΠΌ:
- ΠΡΠ»ΠΈ Π²ΠΈΠ΄ΠΈΠΌ
'L'
Π² target
, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΡΡΡΡΡΠΈΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
'L'
.
- ΠΡΠ»ΠΈ Π²ΠΈΠ΄ΠΈΠΌ
'L'
Π² start
, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π΅ΡΡΡ Π»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ 'L'
, ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΡΡΡΡΡΠΈΠΊ.
- ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π»Ρ
'R'
- Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ
'R'
Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅Ρ 'L'
, ΠΈ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΡΡΡΡΠΈΠΊΠΈ.
- Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ Π²ΡΠ΅
'L'
ΠΈ 'R'
ΡΡΡΠ΅Π½Ρ (Π±Π°Π»Π°Π½Ρ ΡΡΡΡΡΠΈΠΊΠΎΠ² Π½ΡΠ»Π΅Π²ΠΎΠΉ).
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ π
- ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ:
O(n)
β ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡ
ΠΎΠ΄ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ.
- ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ:
O(1)
β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° ΡΡΡΡΡΠΈΠΊΠ°.
Π’Π°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ Π·Π°ΡΡΠ°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Ρ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ
ΡΡΡΠΎΠΊ.
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ΅Π½ΠΈΡ
impl Solution {
pub fn can_change(start: String, target: String) -> bool {
let mut left_pieces = 0; // Tracks available 'L' pieces
let mut right_pieces = 0; // Tracks available 'R' pieces
for (&start_char, &target_char) in
start.as_bytes().iter().zip(target.as_bytes().iter()
) {
// Check for target_char == 'L'
if target_char == b'L' {
if right_pieces > 0 {
return false; // 'L' cannot cross 'R'
}
left_pieces += 1;
}
// Check for start_char == 'L'
if start_char == b'L' {
if left_pieces <= 0 {
return false; // No available 'L' to move
}
left_pieces -= 1;
}
// Check for start_char == 'R'
if start_char == b'R' {
if left_pieces > 0 {
return false; // 'R' cannot cross 'L'
}
right_pieces += 1;
}
// Check for target_char == 'R'
if target_char == b'R' {
if right_pieces <= 0 {
return false; // 'R' must have a matching piece
}
right_pieces -= 1;
}
}
// All pieces should be accounted for
left_pieces == 0 && right_pieces == 0
}
}
ΠΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
- ΠΠΎΡΡΠ΄ΠΎΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Π·Π½Π°ΡΠΈΠΌ ΠΈ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π°.
- Π ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΡΠ°ΠΊΠΎΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΈ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ Π»ΡΠ±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° ΠΊΠΎΠ΄ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Π»ΠΈ