20.1:ABC对应123问题

这篇具有很好参考价值的文章主要介绍了20.1:ABC对应123问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

规定1和A对应、2和B对应、3和C对应…26和Z对应

那么一个数字字符串比如"111”就可以转化为:

“AAA”、“KA"和"AK”

给定一个只有数字字符组成的字符串str,返回有多少种转化结果

一:暴力方法

20.1:ABC对应123问题,算法,java,算法,数据结构

	public static int number(String str) {
        if (str == null || str.length() < 1) {
            return 0;
        }

        char[] chars = str.toCharArray();
        return process(chars, 0);
    }

    //返回所有可能出现的方法数目。
    public static int process(char[] chars, int index) {

        //之所以返回1是因为走到最后这条路是有效的,所以返回1说明这条路有效,归的时候就会将这条路算入。
        if (index >= chars.length) {
            return 1;
        }

        //这个截止条件十分的重要。
        //如果当前的index独立的面对0字符说明当前的决定是错误的,所以返回0,因为0加任何的数都是0相当于这条路废了。
        if (chars[index] == '0') {
            return 0;
        }

        //只要当前位置
        int nub1 = process(chars, index + 1);

        //要当前位置与后一位置
        if (index + 1 != chars.length) {
            int nub2 = process(chars, index + 2);
            String ans = String.valueOf(chars[index]) + String.valueOf(chars[index + 1]);
            if (Integer.parseInt(ans) <= 26) {
                return nub2 + nub1;
            }
        }
        return nub1;
    }

注意递归中遇到return 就结束 递,开始往回 归。文章来源地址https://www.toymoban.com/news/detail-610507.html

二:依赖版本迭代实现

/**
 * 迭代版本
 */
	public static int number2(String str) {
    int[] arr = new int[str.length() + 1];

    // index >= chars.length return 1
    arr[str.length()] = 1;
    for (int index = str.length() - 1; index >= 0; index--) {
        //是0直接跳过,因为从后往前构造,所以要不是0,要不是0x等,都是不合理的。如果是从前往后构造的化,x0是合理的。
        if ("0".equals(String.valueOf(str.charAt(index)))) {
            continue;
        }
        //只要当前位置
        int nub1 = arr[index + 1];
        //要当前位置与后一位置
        if (index + 1 != str.length()) {
            int nub2 = arr[index + 2];
            String ans = String.valueOf(str.charAt(index)) + String.valueOf(str.charAt(index + 1));
            if (Integer.parseInt(ans) <= 26) {
                arr[index] = nub2 + nub1;
                continue;
            }
        }
        arr[index] = nub1;
    }
    return arr[0];
}

到了这里,关于20.1:ABC对应123问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构与算法——20.B-树

    这篇文章我们来讲解一下数据结构中非常重要的B-树。 目录 1.B树的相关介绍 1.1、B树的介绍 1.2、B树的特点 2.B树的节点类 3.小结 在介绍B树之前,我们回顾一下我们学的树。 首先是 二叉树 ,这个不用多说,然后为了查找的效率,我们提出了 搜索二叉树(或者称为二叉搜索树

    2024年04月15日
    浏览(25)
  • js 正则表达式 限制input元素内容必须以abc开头,123结尾

    要通过正则表达式验证一个输入元素的内容是否以\\\"abc\\\"开头且以\\\"123\\\"结尾,您可以使用 ^ 表示开头, $ 表示结尾,以及适当的字符类或具体字符。以下是一个示例正则表达式: 上面的正则表达式将匹配以\\\"abc\\\"开头,以\\\"123\\\"结尾的任何字符串,其中 .* 表示匹配零个或多个任意字符

    2024年02月13日
    浏览(38)
  • 数据结构与算法之字符串: Leetcode 20. 有效的括号 (Typescript版)

    有效的括号 https://leetcode.cn/problems/valid-parentheses/ 描述 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相

    2024年02月01日
    浏览(50)
  • 20.1K Star!Notion的开源替代方案:AFFiNE

    Notion这款笔记软件相信很多开发者都比较熟悉了,很多读者,包括我自己都用它来记录和管理自己的笔记。今天给大家推荐一个最近比较火的开源替代方案:AFFiNE。目前该开源项目已经斩获20.1K Star,热度非常的高,下面一起来认识一下这个继Notion之后,被热捧的开源软件吧。

    2024年02月16日
    浏览(40)
  • 从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}

    该代码将原始数组中的每个元素遍历一次,并根据元素类型将其添加到相应的属性中。在这里,我们使用了isNaN()函数来检查一个元素是否为数字。如果是数字,则将其添加到result对象的number属性中;否则,将其添加到result对象的char属性中。最终,输出result对象即可得到所需

    2024年02月06日
    浏览(34)
  • 【云原生】在AWS平台EKS1.25,Helm安装Nexus3.20.1

    使用helm方式安装 工作目录: /opt/eks/yaml/nexus3 添加helm chart源 helm repo add azure http://mirror.azure.cn/kubernetes/charts/ 查询版本 chart的版本和nexus的版本有些差异,准备安装的版本是3.20.1,对应的是chart版本是1.23.1、1.23.0、1.22.0、1.21.4等,这里就安装chart最新的1.23.1版本 拉取chart包 helm

    2024年02月15日
    浏览(35)
  • 算法与数据结构——递归算法+回溯算法——八皇后问题

    八皇后问题是一个经典的回溯算法问题,目的是在8×8的国际象棋棋盘上放置八个皇后,使得没有皇后可以互相攻击(即没有两个皇后在同一行、同一列或同一对角线上)。 回溯算法是一种解决问题的算法,它通过尝试所有可能的解决方案来解决问题。在八皇后问题中,计算

    2024年02月09日
    浏览(52)
  • 【数据结构与算法】之多指针算法经典问题

    本文为 【数据结构与算法】多指针算法经典问题 相关介绍,下边将对 链表反转 (包含 迭代反转链表 、 递归反转 、 头插法反转 ), 双指针-快慢指针 (包含 寻找单向无环链表的中点 、 判断单向链表是否有环及找环入口 ), 双指针-左右指针 (包含 两数之和 、 二分查

    2024年02月03日
    浏览(54)
  • 【数据结构和算法】种花问题

    Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 ​​​​​方法一:贪心 2.2 贪心算法一般思路 三、代码 3.1 ​​​​​方法一:贪心 四、复杂度分析 4.1 ​​​​​方法一:贪心 

    2024年01月20日
    浏览(40)
  • 数据结构与算法 -- 子序列问题

    一、子序列问题         子数组问题是连续的,而子序列问题是不连续的。比如说字符串 “I wanna keep a giraffe in my backyard” 的一种子序列就可以是 “Igbackd”。 子序列不再要求答案是一个连续的串。一个字符串的子序列,是由原字符串在不改变字符的相对顺序的情况下删

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包