optimizations

This commit is contained in:
attila 2018-12-05 08:22:03 +01:00
parent 93eb6067f3
commit c9c3c17302

View File

@ -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 {
if all_chars[count + 1] == cur_char_lowercase{
count += 1;
} else {
new_string.push(all_chars[count].clone());
}
} }
} else {
count += 1; stack.push(c.clone());
} }
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 return stack.len() as i32
} }