首页 > 其他分享 >#yyds干货盘点# LeetCode面试题:解码方法

#yyds干货盘点# LeetCode面试题:解码方法

时间:2023-04-29 16:33:03浏览次数:38  
标签:yyds 面试题 06 charAt 映射 示例 int 解码 LeetCode

1.简述:

一条包含字母 A-Z 的消息通过以下映射进行了 编码 :

'A' -> "1"
'B' -> "2"
...
'Z' -> "26"

要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106" 可以映射为:

"AAJF" ,将消息分组为 (1 1 10 6)

"KJF" ,将消息分组为 (11 10 6)

注意,消息不能分组为  (1 11 06) ,因为 "06" 不能映射为 "F" ,这是由于 "6" 和 "06" 在映射中并不等价。

给你一个只含数字的 非空 字符串 s ,请计算并返回 解码 方法的 总数 。

题目数据保证答案肯定是一个 32 位 的整数。

 

示例 1:

输入:s = "12"
输出:2
解释:它可以解码为 "AB"(1 2)或者 "L"(12)。

示例 2:

输入:s = "226"
输出:3
解释:它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。

示例 3:

输入:s = "06"
输出:0
解释:"06" 无法映射到 "F" ,因为存在前导零("6" 和 "06" 并不等价)。

2.代码实现:

class Solution {
    public int numDecodings(String s) {
        int n = s.length();
        int[] f = new int[n + 1];
        f[0] = 1;
        for (int i = 1; i <= n; ++i) {
            if (s.charAt(i - 1) != '0') {
                f[i] += f[i - 1];
            }
            if (i > 1 && s.charAt(i - 2) != '0' && ((s.charAt(i - 2) - '0') * 10 + (s.charAt(i - 1) - '0') <= 26)) {
                f[i] += f[i - 2];
            }
        }
        return f[n];
    }
}

标签:yyds,面试题,06,charAt,映射,示例,int,解码,LeetCode
From: https://blog.51cto.com/u_15488507/6236804

相关文章

  • 美团面试题:慢SQL有遇到过吗?是怎么解决的?
    大家好,我是田维常,可以叫我老田,也可以叫我田哥。2017年的时候,我刚去上海,朋友内推我去美团面试,之前我也写过一个一篇文章,也是在美团面试中遇到的:美团面试题:Strings=newString("111")会创建几个对象?关于慢SQL,我和面试官扯了很久,面试官也是很谦虚的,总是点头,自己以为回答的还可以。......
  • Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?(文末福利)
    hi大家好我是田哥今天,给大家分享一些面试干货。我们每次面试基本上都是超过一个小时的,面试官肯定会问很多问题,其实也不是需要我们全部能回答上来。但是,关键点如果回答不上来,就算你其他的回答的不错,也没用,最终offer还是不会给你的。好吧,话不多说,我们直接开始:自我介绍很多人觉得自......
  • #yyds干货盘点# LeetCode程序员面试金典:组合总和
    题目:给你一个无重复元素的整数数组 candidates和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target的所有 不同组合,并以列表形式返回。你可以按任意顺序返回这些组合。candidates中的同一个数字可以无限制重复被选取。如果至少一个数字的被......
  • #yyds干货盘点# LeetCode面试题:子集 II
    1.简述:给你一个整数数组nums,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。返回的解集中,子集可以按任意顺序排列。 示例1:输入:nums=[1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例2:输入:nums=[0]输出:[[],[0]]2.代码实现:classSolu......
  • 2w字 详解 String,yyds
    关注公众号“Java后端技术全栈”回复“000”获取程序员必备电子书前言大家好,我是老田,今天给大家分享java基础知识之String。String类的重要性就不必说了,可以说是我们后端开发用的最多的类,所以,很有必要好好来聊聊它。本文主要内容如下:String简介我们先来说说,java中八大数据类型,然......
  • Dubbo常见面试题
    关注Java后端技术栈“回复“面试”获取最新资料其实关于Dubbo的面试题,我觉得最好的文档应该还是官网,因为官网有中文版,照顾了很多阅读英文文档吃力的小伙伴。但是官网内容挺多的,于是这里就结合官网和平时面试被问的相对较多的题目整理了一下。1,说说一次Dubbo服务请求流程?基本工作流......
  • Java高频面试题和答案
    一、Java基础篇Object有哪些常用方法?大致说一下每个方法的含义Java创建对象有几种方式?获取一个类对象的方式有哪些?ArrayList和LinkedList的区别有哪些?用过ArrayList吗?说一下它有什么特点?有数组了为什么还要搞个ArrayList呢?说说什么是fail-fast?Hashtable与HashMap的区......
  • C语言刷leetcode——并查集
    目录概述参考链接:刷题入门题:547.省份数量(朋友圈)684.冗余连接概述https://leetcode.cn/problems/number-of-provinces/solution/python-duo-tu-xiang-jie-bing-cha-ji-by-m-vjdr/基本概念并查集是一种数据结构并查集这三个字,一个字代表一个意思。并(Union),代表合并查(Find),......
  • vscode-leetcode
    vscode里写leetcode需要的插件xavier-cai.vscode-leetcode-cpp-debug,leetcode.vscode-leetcodeLeetCodeC++Debugger.DeleteTemporaryContents置为falsectrl+shift+p运行LeetCodeC++Debugger:StartDebugging在leetcode-main.cpp进行debug注意不要使用mingw的调试......
  • 2023面试自动化测试面试题【含答案】,建议收藏
    1、你做了几年的测试、自动化测试,说一下selenium的原理是什么?我做了五年的测试,1年的自动化测试;selenium它是用http协议来连接webdriver,客户端可以使用Java或者Python各种编程语言来实现;2、什么项目适合做自动化测试?关键字:不变的、重复的、规范的第一点,需求变化不能......