optimizations
This commit is contained in:
parent
93eb6067f3
commit
c9c3c17302
|
@ -24,42 +24,22 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn reduce(string: String) -> i32 {
|
fn reduce(string: String) -> i32 {
|
||||||
let mut current_string = string;
|
let all_chars: Vec<char> = string.chars().into_iter().collect();
|
||||||
let mut new_string: Vec<char>;
|
|
||||||
let mut last_string = String::new();
|
|
||||||
|
|
||||||
while last_string != current_string {
|
let mut stack: Vec<char> = Vec::new();
|
||||||
let all_chars: Vec<char> = current_string.chars().into_iter().collect();
|
|
||||||
let mut count = 0;
|
|
||||||
|
|
||||||
new_string = Vec::new();
|
for c in all_chars{
|
||||||
|
if !stack.is_empty(){
|
||||||
while count < all_chars.len() - 1 {
|
let sub = *stack.last().unwrap() as i32 - c as i32;
|
||||||
let cur_char_uppercase = all_chars[count].to_uppercase().collect::<Vec<char>>()[0];
|
if sub == 32 || sub == -32 {
|
||||||
let cur_char_lowercase = all_chars[count].to_lowercase().collect::<Vec<char>>()[0];
|
stack.pop();
|
||||||
|
} else{
|
||||||
if all_chars[count] == cur_char_lowercase {
|
stack.push(c.clone());
|
||||||
if all_chars[count + 1] == cur_char_uppercase{
|
|
||||||
count += 1;
|
|
||||||
} else {
|
|
||||||
new_string.push(all_chars[count].clone());
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if all_chars[count + 1] == cur_char_lowercase{
|
stack.push(c.clone());
|
||||||
count += 1;
|
|
||||||
} else {
|
|
||||||
new_string.push(all_chars[count].clone());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
count += 1;
|
return stack.len() as i32
|
||||||
}
|
|
||||||
|
|
||||||
new_string.push(all_chars[all_chars.len() - 1].clone());
|
|
||||||
|
|
||||||
last_string= current_string.clone();
|
|
||||||
current_string = new_string.clone().into_iter().collect();
|
|
||||||
}
|
|
||||||
|
|
||||||
return (current_string.len()-1) as i32
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user