File tree 3 files changed +64
-0
lines changed
3 files changed +64
-0
lines changed Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change
1
+ use std:: io:: { self , Read } ;
2
+
3
+ fn main ( ) {
4
+ let mut out = vec ! [ '-' ] ;
5
+ let mut polymers = String :: new ( ) ;
6
+ io:: stdin ( ) . read_to_string ( & mut polymers) . unwrap ( ) ;
7
+ polymers. pop ( ) ;
8
+
9
+ for letter in polymers. chars ( ) {
10
+ let last = out[ out. len ( ) - 1 ] ;
11
+
12
+ if letter == last || !letter. eq_ignore_ascii_case ( & last) {
13
+ out. push ( letter) ;
14
+ } else {
15
+ out. pop ( ) ;
16
+ }
17
+ }
18
+
19
+ println ! ( "{}" , out. len( ) - 1 ) ;
20
+ }
Original file line number Diff line number Diff line change
1
+ use std:: io:: { self , Read } ;
2
+
3
+ fn main ( ) {
4
+ let mut out = vec ! [ '-' ] ;
5
+ let mut polymers = String :: new ( ) ;
6
+ io:: stdin ( ) . read_to_string ( & mut polymers) . unwrap ( ) ;
7
+ polymers. pop ( ) ;
8
+
9
+ for letter in polymers. chars ( ) {
10
+ let last = out[ out. len ( ) - 1 ] ;
11
+
12
+ if letter == last || !letter. eq_ignore_ascii_case ( & last) {
13
+ out. push ( letter) ;
14
+ } else {
15
+ out. pop ( ) ;
16
+ }
17
+ }
18
+
19
+ out. pop ( ) ;
20
+
21
+ let min: usize = ( b'a' ..=b'z' )
22
+ . map ( |x| get_reduced_count ( & out, x as char ) )
23
+ . min ( )
24
+ . unwrap ( ) ;
25
+
26
+ println ! ( "{}" , min) ;
27
+ }
28
+
29
+ fn get_reduced_count ( polymers : & [ char ] , remove : char ) -> usize {
30
+ let mut out = vec ! [ '-' ] ;
31
+
32
+ for letter in polymers. iter ( ) . cloned ( ) . filter ( |c| !remove. eq_ignore_ascii_case ( c) ) {
33
+ let last = out[ out. len ( ) - 1 ] ;
34
+
35
+ if letter == last || !letter. eq_ignore_ascii_case ( & last) {
36
+ out. push ( letter) ;
37
+ } else {
38
+ out. pop ( ) ;
39
+ }
40
+ }
41
+
42
+ out. len ( ) - 1
43
+ }
You can’t perform that action at this time.
0 commit comments