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

news2024/12/26 0:45:47

问题描述

给定一个数字,我们按照如下规则把它翻译为字符串: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;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[翻译]MOSIP Blue Book

目录 Preface&#xff08;前言&#xff09; Executive summary&#xff08;执行摘要&#xff09; 1 Introduction&#xff08;介绍/序言&#xff09; 1.1 Principles on Identification&#xff08;识别原则&#xff09; 1.2 Need for a Foundational ID&#xff08;需要基…

【Java进阶】Java进阶-手撕java agent

文章目录 Java Agent一、定义与工作原理二、主要特点三、应用场景四、使用注意事项 Java Agent相关接口1. Instrumentation接口2. ClassFileTransformer接口3. 其他相关类和接口 手写一个Java Agent1. 编写Java Agent代码2. 编写MANIFEST.MF文件3. 编译代码并打包成JAR文件4. 运…

JavaWeb——Maven(2/8):概述-介绍安装(步骤、具体操作、测试)

目录 介绍 安装 步驟 具体操作 测试 主要讲解两个方面&#xff1a;Maven的介绍以及Maven的安装。 先来介绍一下没问当中的一些概念和模型。 介绍 Apache Maven是一个项目管理和构建工具&#xff0c;它基于项目对象模型&#xff08;POM&#xff1a;project object model…

Java | Leetcode Java题解之第477题汉明距离总和

题目&#xff1a; 题解&#xff1a; class Solution {public int totalHammingDistance(int[] nums) {int ans 0, n nums.length;for (int i 0; i < 30; i) {int c 0;for (int val : nums) {c (val >> i) & 1;}ans c * (n - c);}return ans;} }

基于Flink+Hologres搭建实时数仓

Apache Paimon是一种流批统一的数据湖存储格式&#xff0c;结合Flink及Spark构建流批处理的实时湖仓一体架构。Paimon创新地将湖格式与LSM技术结合起来&#xff0c;给数据湖带来了实时流更新以及完整的流处理能力。借助实时计算Flink版与Apache Paimon&#xff0c;可以快速地在…

多人播客的生成#使用OpenAI Swarm框架

使用Swarm来写多智能体的代码&#xff0c;非常简洁高效。 什么是Swarm&#xff1f; Swarm是由OpenAI开发的一个实验性多代理系统框架&#xff0c;旨在探索多代理系统的高效接口。该框架注重轻量级、可控性高且易于测试&#xff0c;主要用于展示代理之间的交接与例行操作模式。S…

多智能体协同太复杂?OpenAI Swarm让问题迎刃而解

OpenAI Solutions团队最新推出的实验性框架Swarm正在为AI领域带来新的可能性。这个专为构建、编排和部署多智能体系统而生的轻量级工具集&#xff0c;正在改变我们处理复杂任务的方式。 Swarm框架的核心理念是让多个AI代理&#xff08;Agent&#xff09;协同工作&#xff0c;每…

基于SSM+Vue+MySQL的少儿编程网上报名系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当下&#xff0c;随着国家对教育的重视以及教育部门对教育改革的不断推进&#xff0c;少儿编程教育逐渐成为了一个热门领域。传统的少儿编程报名方式往往依赖于线下填写纸质表格或电话报名&#xff0c;这种方式不仅效率低下&a…

群晖使用frpc连接qbittorrent时会出现Unauthorized

跨域问题&#xff1a; 如果你是通过不同的网络或子网访问 qBittorrent Web UI&#xff0c;可能会引发跨域问题。尝试在 qBittorrent.conf 中添加以下设置&#xff0c;允许跨域访问&#xff1a; find / -name qBittorrent.conf WebUI\HostHeaderValidationfalse 成功

【机器人数值优化】数值优化基础(一)从理论到实战全方位指南 | 解锁机器人技术的核心技能

&#x1f4af; 欢迎光临清流君的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落 &#x1f4af; &#x1f525; 个人主页:【清流君】&#x1f525; &#x1f4da; 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 &#x1f4da; &#x1f31f;始终保持好奇心&…

一文简述工程项目管理中的最常见概念

蓝燕云https://www.lanyancloud.com/致力于为工程行业中各类企业和组织提供专业、简单、可靠的工程项目管理系统&#xff0c;专注于提升企业对于项目管理中成本、进度、质量、安全、资料等全场景管理能力。 01 怎么理解工程项目管理&#xff1f; 建设工程项目管理指的是专业…

神经网络模型的“扩散与进化”思想启迪

在上一篇笔记「上交大全华班复现o1旅程式学习下的深思考」中&#xff0c;其中对于上交大提出的旅程学习即system2慢思考认知范式下对于“多步骤的隐式到显式空间状态映射下的细粒度联合概率分布建模”的描述隐喻为“社会心理学或社会经济学两种不同的长程动态系统慢演化现象”。…

Java之lambda

目录 lambda 引入 语法 函数式接口 lambda表达式的使用 语法精简&#xff1a; 代码示例&#xff1a; 变量捕获 局部变量捕获 成员变量捕获 lambda在集合中的使用 lambda的优缺点 lambda 引入 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表…

设计模式-原型模式(克隆、Clone、Prototype)

原型模式&#xff08;克隆、Clone、Prototype&#xff09;是一种创建型设计模式&#xff0c; 使你能够复制已有对象&#xff0c; 而又无需使代码依赖它们所属的类。 问题 譬如美国研制了一种特效药&#xff0c;而且还在专利保护器内&#xff0c;而印度制药公司看中了&#xff0…

常见开源组件的详解

文章目录 RPCRPC架构和工作流程为什么有了HTTP还要用RPC底层协议数据格式连接管理错误处理 使用场景常见的RPC框架 Web应用框架主要功能常见的Web应用框架Spring Boot (Java)Django (Python)Express.js (Node.js) Redis主要特点应用场景缓存问题Redis集群架构主从复制Redis Clu…

【算法】笨小猴

[NOIP2008]笨小猴_牛客题霸_牛客网 【描述】 eg1中&#xff0c;输入“error” “e”出现了1次&#xff0c;“r”出现了3次&#xff0c;“o”出现了1次 最大是3&#xff0c;最小是1&#xff0c;3-12&#xff0c;2是质数&#xff0c;所以输出“Lucky word”和这个单词 eg2中&…

【Oracle数据库进阶】003.SQL基础查询_增、删、改数据

课 程 推 荐我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448;入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448;虚 拟 环 境 搭 建 &#xff1a;&#x1…

【基于ARM深入分析C程序】1--ARM架构与汇编、分析C语句`a++`的执行过程

【基于ARM深入分析C程序】1–ARM架构与汇编、分析C语句a的执行过程 文章目录 【基于ARM深入分析C程序】1--ARM架构与汇编、分析C语句a的执行过程一、3个操作指令二、CPU是怎么知道执行这三条操作指令的&#xff1f;2.1 CPU的架构 2.2 寄存器 本文作为学习笔记&#xff0c;围绕的…

【ARM】v8架构programmer guide(6)_MMU内存管理模块

快进到内存管理模块吧&#xff0c;其他的后面再补充~ 目录 1.1 TLB (Translation Lookaside Buffer) 1.2 Kernel 和 Application 虚拟地址空间 1.3 转换虚拟地址到物理地址 1.3.1 安全和非安全地址空间 1.3.2 配置和使能MMU 1.3.3 当MMU没有使能的时候 1.4 ARMv8-A的页…

6.2 遍历重定位表

本节我们将编写一个遍历重定位表的示例程序&#xff0c;打印重定位表。 本节必须掌握的知识点&#xff1a; 遍历重定位表 6.2.1 遍历重定位表 实验四十三&#xff1a;遍历重定位表 以下代码实现打印"c:\\notepad64.exe"进程重定位表的所有信息。 /*--------------…