首页 > 其他分享 >MarsCode--字符串有多少种可能性【简单】

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

时间:2024-10-19 22:53:19浏览次数:3  
标签:翻译 乘积 -- 区间 int 字符串 MarsCode dp 数字

问题描述

给定一个数字,我们按照如下规则把它翻译为字符串: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 here
    std::cout << (solution(12258) == 5) << std::endl;
    std::cout << (solution(1400112) == 6) << std::endl;
    std::cout << (solution(2110101) == 10) << std::endl;

    return 0;
}

在这里插入图片描述

标签:翻译,乘积,--,区间,int,字符串,MarsCode,dp,数字
From: https://blog.csdn.net/m0_75266675/article/details/142906340

相关文章

  • MIB search path: /root/.snmp/mibs:/root/snmpd/share/snmp/mibs Cannot find module
    这个问题通常出现在使用SNMP(简单网络管理协议)时,系统无法找到SNMPv2-MIB模块。以下是解决这个问题的步骤:1.确认MIB文件存在首先,确保SNMPv2-MIB文件存在于指定的路径中:/root/.snmp/mibs:/root/snmpd/share/snmp/mibs你可以检查这些目录中是否存在SNMPv2-MIB文件:ls/roo......
  • 基于php的大学生运动会管理系统的设计与实现(源码+LW+调试文档)
    目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • 基于Python的电影分析推荐系统的设计与实现(源码+LW+调试文档)
    目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • C语言_通讯录
    引言:当我们C语言语法大部分都学习完的情况下,可以尝试一些项目来提升自己,比如下面的这个通讯录。玩法介绍:我们需要对通讯录里面的个人信息进行增删查改以及排序等操作技能要求:学习完大部分的C语言语法知识。接下来我将创建三个文件:具备函数声明、宏定义、所需库函数的头......
  • 基于SpringBoot的校园部门资料管理系统的设计与实现(源码+LW+调试文档)
    目录:程序功能截图:程序部分代码参考:数据库sql:程序技术介绍:后端springboot介绍:mysql介绍:程序论文:​选择我的理由:程序获取:......
  • Java的重载和主要内存区
    JAVA的重载​在Java中,重载(Overloading)是指在同一个类中可以定义多个同名的方法,但它们的参数列表必须不同。重载可以通过改变参数的数量、类型或者顺序来实现。重载提高了代码的可读性和灵活性。JAVA重载要满足的条件:在同一个类下:java的重载必须在同一个类之下方法名相同......
  • 基于Node.js+vue公司考勤系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于公司考勤系统的研究,现有研究主要以通用的企业管理系统为主,专门针对考勤系统的深度剖析较少。在国内外的研究现状中,大多数研究集中在企业整体管理系......
  • 基于Node.js+vue鸿鹄教育培训平台(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于教育培训平台的研究,现有研究主要以综合性教育平台为主,专门针对鸿鹄教育培训平台这种特定品牌教育平台的研究较少。在国内外,教育培训平台众多,但功能......
  • 基于Node.js+vue个性化学习推荐网站(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着信息技术的飞速发展,教育领域也在不断变革。关于学习推荐系统的研究,现有研究主要以通用性学习推荐为主,专门针对个性化学习推荐的研究较少。在国内外,......
  • mongo基本命令(一)
    一前言环境:win10mongo6.0.1记录一些基本的mongo查询命令二查询命令1进入命令行进入mongo命令行,我这里是mongo是装在docker里面的需要先在docker里面启动mongo容器dockerexec-itxxxbash 进入mongo容器,xxx为mongo容器名mongosh 进入mongo命令行,我安装时没有设......