杂谈算法电话号码的字母组合

电话号码的字母组合

image 电话号码的字母组合 今天依然是很简单的一道题,别看东西那么多,实际上就是多叉树路径,我们要递归的算法,把每一层的结果保存存入下一层,长度符合要求就存进vec中 image

入口函数

use std::collections::HashMap;
impl Solution {
    pub fn letter_combinations(digits: String) -> Vec<String> {
 
        let mut ans:Vec<String>=vec![];
        if digits.len()==0{
            return ans;
        }
        let map = HashMap::from([
            (2, vec!('a', 'b', 'c')),
            (3, vec!('d', 'e', 'f')),
            (4, vec!('g', 'h', 'i')),
            (5, vec!('j', 'k', 'l')),
            (6, vec!('m', 'n', 'o')),
            (7, vec!('p', 'q', 'r', 's')),
            (8, vec!('t', 'u', 'v')),
            (9, vec!('w', 'x', 'y', 'z'))
        ]);
  let len=digits.len();
            Self::addVec(digits.chars().collect(),0,map.clone(),String::from(""),&mut ans,len);
        ans
    }

递归函数

 pub fn addVec(digits:Vec<char>,idx:usize,map:HashMap<i32,Vec<char>>, origin:String, ans:&mut Vec<String>,len:usize){
        if origin.len()==len{
              ans.push(origin);
      }else{
            let strs=map.get(&(digits[idx] as i32 - '0' as i32)).unwrap();
          for str in strs {
             Self::addVec(digits.clone(),idx+1,map.clone(),(origin.clone()+ &*str.to_string()),ans,len);
          }
      }
    }
}

For Paul

这是一个个人博客,主要用于记录自己的学习过程,用于ts和rust的技术交流

© 2025 Paul Blog • Made withby Paul

使用 Next Rust 和 Tailwind CSS 构建

最近更新时间: 2025-04-29