MarsCode--字符串有多少种可能性【简单】

embedded/2024/10/17 17:27:36/

问题描述

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

输入格式

一个 int 型的数字,0 <= num <= 2 的 31 次方

输出格式

也是一个 int 型数字,代表字符串的总共可能性

输入样例

输入: 12258

输出样例

输出: 5

解释: 12258 有 5 种不同的翻译,分别是 “bccfi”, “bwfi”, “bczi”, “mcfi” 和 “mzi”

分析

要解决这个问题,我们需要找到数组中一段连续的区间,使得这些元素的乘积尽可能大。由于数组中的元素都是2的幂,乘积会增长得非常快,因此这个问题实际上是要找到一段区间,使得这些2的幂的乘积最大。

我们可以通过以下步骤来解决这个问题:

初始化变量:我们需要一个变量来记录当前的最大乘积,以及对应的区间开始和结束位置。
遍历数组:使用两个指针来表示当前考虑的区间,并计算该区间的乘积。
更新最大值:如果当前区间的乘积大于之前的最大乘积,则更新最大乘积和对应的区间。
处理边界条件:当乘积为0时,需要特别处理。

完整代码

#include <iostream>
#include <vector>
#include <string>using namespace std;int solution(int num) {if (num < 0) return 0;  // 处理非法输入string numStr = to_string(num);int n = numStr.size();if (n == 0) return 0;  // 处理空字符串vector<int> dp(n + 1, 0);dp[0] = 1;  // 初始条件dp[1] = 1;  // 初始条件for (int i = 2; i <= n; ++i) {// 当前数字单独翻译dp[i] = dp[i - 1];// 当前数字和前一个数字组合翻译int twoDigits = stoi(numStr.substr(i - 2, 2));if (twoDigits >= 10 && twoDigits <= 25) {dp[i] += dp[i - 2];}}return dp[n];
}int main() {// You can add more test cases herestd::cout << (solution(12258) == 5) << std::endl;std::cout << (solution(1400112) == 6) << std::endl;std::cout << (solution(2110101) == 10) << std::endl;return 0;
}

在这里插入图片描述


http://www.ppmy.cn/embedded/127274.html

相关文章

打家劫舍系列 | Leetcode 198 | 213 | 337 | 动态规划 | 滚动数组

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 毛毛张今天分享的是动态规划中打家劫舍系列的题目&#xff01; 文章目录 题目1&#xff1a;[198. 打家劫舍](https://leetcode.cn/problems/house-robber/)1.题目描述…

【Rust版从头写CAD】 前言

文章目录 前言 前言 Rust是一种系统级编程语言&#xff0c;注重安全性、性能和并发性&#xff0c;适用于开发高效、安全和可靠的应用程序&#xff0c;非常适合于CAD领域开发。 然而&#xff0c;要实现一个完整的CAD&#xff08;计算机辅助设计&#xff09;软件是一个复杂且耗时…

Midjourney中文版:解锁你的创意之旅

在创意与技术的交汇点&#xff0c;Midjourney中文版正等待着每一位热爱艺术、渴望表达的灵魂。这不仅仅是一款AI绘画工具&#xff0c;更是一个激发无限灵感、让创意自由翱翔的奇妙平台。 Midjourney AI超强绘画 (原生态系统&#xff09;用户端&#xff1a;Ai Loadinghttps://w…

SpinalHDL之错误集(一)

本文作为SpinalHDL学习笔记第七十六篇&#xff0c;作为错误集使用&#xff0c;类似高中生的错题集&#xff0c;记录使用SpinalHDL过程中遇到的问题&#xff0c;小到语法错误、版本兼容问题&#xff0c;大到SpinalHDL库函数错误等等&#xff0c;持续更新。 SpinalHDL学习笔记总…

【数据结构】图的最短路径

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C游记》《进击的C》《Linux迷航》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、最短路径的概念二、Dijkstra算法2.1 思想2.2 实现 三、Bellman-Ford算法3.1 思想3.2 实现 四、Floyd-Warsh…

rv1109/rv1126 编译错误记录

rv1109/rv1126 编译错误记录 瑞芯微针对市面上的电池类IPC产品存在抓拍速度慢、识别准确性低、待机时间短、拍摄效果差及视频流畅度不佳等痛点&#xff0c;推出 rv1109 和 rv1126 电池类智慧视觉方案&#xff0c;主要定位于人工智能&#xff08;AI&#xff09;边缘计算和智能硬…

安装openai-whisper 失败

昨晚安装python 语音识别模型经常失败&#xff1a; pip install openai-whisper 具体原因是因为国外的源使网络不稳定造成断网 查阅资料我自己的解决办法是在自己C:\Users\用户名目录下建一个pip文件夹&#xff0c;在pip文件夹下建一个pip.ini文件 在pip.ini文件中加入自己要…