fork download
  1. fn s2n(s: &str) -> u32 {
  2. s.bytes().fold(0, |acc, b| acc * 26 + (b - b'A'+ 1) as u32)
  3. }
  4. fn n2s(n: u32) -> String {
  5. fn aux(mut acc: String, n: u32) -> String {
  6. if n < 1 {acc} else {
  7. acc.insert(0, (((n - 1) % 26) as u8 + b'A') as char);
  8. aux(acc, (n - 1) / 26)
  9. }
  10. }
  11. aux("".to_string(), n)
  12. }
  13. fn main() {
  14. for s in vec!("A", "AA", "ABC") {println!("{} => {}", s, s2n(s))};
  15. for n in vec!(26, 266379) {println!("{} => {}", n, n2s(n))}
  16. }
  17.  
Success #stdin #stdout 0s 14880KB
stdin
Standard input is empty
stdout
A => 1
AA => 27
ABC => 731
26 => Z
266379 => ODAI