File tree Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change
1
+ // 脑筋急转弯
2
+ // 数学归纳法
3
+ pub fn original_digits ( s : String ) -> String {
4
+ let string = s;
5
+ let mut z = 0 ;
6
+ let mut w = 0 ;
7
+ let mut g = 0 ;
8
+ let mut x = 0 ;
9
+ let mut t = 0 ;
10
+ let mut r = 0 ;
11
+ let mut s = 0 ;
12
+ let mut o = 0 ;
13
+ let mut v = 0 ;
14
+ let mut i = 0 ;
15
+ for c in string. chars ( ) . collect :: < Vec < char > > ( ) {
16
+ match c {
17
+ 'z' => z += 1 ,
18
+ 'w' => w += 1 ,
19
+ 'g' => g += 1 ,
20
+ 'x' => x += 1 ,
21
+ 't' => t += 1 ,
22
+ 'r' => r += 1 ,
23
+ 's' => s += 1 ,
24
+ 'o' => o += 1 ,
25
+ 'v' => v += 1 ,
26
+ 'i' => i += 1 ,
27
+ _ => { } ,
28
+ }
29
+ }
30
+ let mut n = vec ! ( 0 ; 10 ) ;
31
+ n[ 0 ] = z;
32
+ n[ 2 ] = w;
33
+ n[ 8 ] = g;
34
+ n[ 6 ] = x;
35
+ n[ 3 ] = t - n[ 2 ] - n[ 8 ] ;
36
+ n[ 4 ] = r - n[ 3 ] - n[ 0 ] ;
37
+ n[ 7 ] = s - n[ 6 ] ;
38
+ n[ 1 ] = o - n[ 4 ] - n[ 2 ] - n[ 0 ] ;
39
+ n[ 5 ] = v - n[ 7 ] ;
40
+ n[ 9 ] = i - n[ 8 ] - n[ 6 ] - n[ 5 ] ;
41
+ let mut ret = String :: new ( ) ;
42
+ for ( i, e) in n. iter ( ) . enumerate ( ) {
43
+ if * e == 0 { continue }
44
+ for _ in 0 ..* e {
45
+ ret. push_str ( & i. to_string ( ) ) ;
46
+ }
47
+ }
48
+ ret
49
+ }
50
+
51
+ fn main ( ) {
52
+ let s = "owoztneoer" . to_string ( ) ;
53
+ println ! ( "{:?}" , original_digits( s) ) ;
54
+ }
You can’t perform that action at this time.
0 commit comments