剑指 Offer 46. 把数字翻译成字符串
思路#
方法一:暴力法#
使用深度优先搜索枚举出全部情况,试探每一种可能性。
1 class Solution { 2 public: 3 int translateNum(int num) { 4 string s = to_string(num); 5 int res = 0; 6 dfs(s, res); 7 return res; 8 } 9 10 void dfs(string s, int& res) { 11 if (s.empty()) { 12 res++; 13 return; 14 } 15 16 for (int i = 1; i <= s.length(); ++i) { 17 //当以0开头时,只有0这一种情况,不能再往后取子串,比如03是非法的,不能翻译 18 if(s[0] == '0') { 19 dfs(s.substr(i), res); 20 return; 21 } 22 23 string sub = s.substr(0, i); 24 int x = stoi(sub); 25 if (x > 0 && x <= 25) { 26 dfs(s.substr(i), res); 27 } 28 else { 29 return; 30 } 31 32 } 33 } 34 };
方法二:动态规划#
1 class Solution { 2 public: 3 int translateNum(int num) { 4 string s = to_string(num); 5 vector<int> f(s.length()+1); 6 7 f[0] = 1; 8 f[1] = 1; 9 10 int len = s.length(); 11 for(int i = 2; i <= len; ++i) { 12 string lastTwoStr = s.substr(i-2, 2); 13 int lastTwoNum = stoi(lastTwoStr); 14 if(lastTwoStr[0] != '0' && lastTwoNum > 0 && lastTwoNum <= 25) { 15 f[i] = f[i-1] + f[i-2]; 16 } else { 17 f[i] = f[i-1]; 18 } 19 } 20 21 return f[len]; 22 } 23 };
参考#
分类:
剑指Offer(第2版)
标签:
动态规划
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南