LeetCode 320. 列举单词的全部缩写(回溯/位运算)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 回溯
      • 2.2 位运算

1. 题目

请你写出一个能够举单词全部缩写的函数。

注意:输出的顺序并不重要。

示例:
输入: "word"
输出:
["word", "1ord", "w1rd", "wo1d", "wor1", "2rd", "w2d", 
"wo2", "1o1d", "1or1", "w1r1", "1o2", "2r1", "3d", "w3", "4"]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generalized-abbreviation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 回溯

class Solution {vector<string> ans;int n;
public:vector<string> generateAbbreviations(string word) {string empty;n = word.size();dfs(word, empty, 0, 0);return ans;}void dfs(string& word, string& cur, int tailnum, int i){	//tailnum 表示尾部现在有多少个连续的缩写,i 表示遍历到哪了if(i == n){if(tailnum > 0)cur += to_string(tailnum);ans.push_back(cur);return;}int curlen = cur.size();//记录当前长度//当前的字符缩写dfs(word, cur, tailnum+1, i+1);cur.resize(curlen);//回溯,删除后面的字符//不缩写,前面有数字的话需要加上if(tailnum > 0)cur += to_string(tailnum);cur += word[i];//不缩写dfs(word, cur, 0, i+1);//尾部缩写数量清0cur.resize(curlen);//回溯}
};

72 ms 21.5 MB

2.2 位运算

class Solution {
public:vector<string> generateAbbreviations(string word) {vector<string> ans;int n = word.size(), i, j, k, zero;for(i = 0; i < (1<<n); ++i)//每位字符两种状态,2进制{zero = 0;//0表示字符替换为缩写,记录连续的个数k = 0;//遍历的word字符的位置string w;for(j = 0; j < n; ++j,++k){if((i>>j)&1)//该位不替换{if(zero > 0)w += to_string(zero);w += word[k];zero = 0;}elsezero++;}if(zero > 0)w += to_string(zero);ans.push_back(w);}return ans;}
};

132 ms 17.7 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

python中文件基本操作命令及注意事项

我们如果想通过程序去修改文件的名字、删除文件或文件夹、获得路径下的文件列表等等操作&#xff0c;python提供了有关这些操作的模块(os模块),需要导入模块import os. 1、修改文件名字&#xff0c;删除文件及目录相关操作: 函数名 描述 os.mkdir(dirname) 创建文件夹 os.…

IIS 7.0 安装SSL证书过程

记录一下维瑞的技术人员在IIS 7.0 安装SSL证书过程。本文参照维瑞技术中心SSL证书安装文档所编&#xff1a;http://www.willrey.com/support/ Windows 2008 - IIS 7.0 SSL证书安装指南 在获取SSL证书前要做制作生成CSR文件&#xff0c;也就是SSL证书请求文件&#xff0c;当收到…

华为nova4是不是鸿蒙系统,华为nova 4手机什么时候可以升级鸿蒙系统?鸿蒙系统nova4升级时间介绍...

华为鸿蒙系统已经上线好久了&#xff0c;许多用户都已经抢先一步体验了&#xff0c;而最近有一部分使用华为nova4手机的用户跑来问我&#xff0c;自己的手机什么可以升级鸿蒙系统吗&#xff1f;什么时候才能升级&#xff1f;首先可以肯定的告诉大家&#xff0c;可以。具体内容下…

LeetCode 548. 将数组分割成和相等的子数组(哈希set)

文章目录1. 题目2. 解题1. 题目 给定一个有 n 个整数的数组&#xff0c;你需要找到满足以下条件的三元组 (i, j, k) &#xff1a; 0 < i, i 1 < j, j 1 < k < n - 1子数组 (0, i - 1)&#xff0c;(i 1, j - 1)&#xff0c;(j 1, k - 1)&#xff0c;(k 1, n …

利用python创建学生管理系统软件代码赏析

目录 一、学生管理系统&#xff56;1.0&#xff08;需求&#xff09; 二、代码实现 一、学生管理系统&#xff56;1.0&#xff08;需求&#xff09; 1、添加学生信息 2、删除学生信息 3、查看学生信息 4、修改学生信息 二、代码实现 # 使用字典存储学生信息 students {}# 学…

html 仿ios选择控件,仿ios垂直滚动选择

注&#xff1a;必须在手机模式下才有效组件效果图组件效果图使用示例htmlcss.box{margin: 20px auto 20px auto;height: 188px;width: 90%;position: relative;}.box1{position: absolute;height: 100%;width: 60%;border-right: 1px solid #aaa;left: 0;}.box2{right: 0;posit…

asp.net中ADO.NET连接SQL数据库代码和连接Access数据库代码

连接SQL数据库方法&#xff1a; 一、建立连接 1、&#xff08;使用System.Data.SqlClient&#xff09; <1> string strcon; //声明连接字串 strcon "server(local);databasemytable;uidsa;pwdsa;"; //编写连接字串 …

LeetCode 469. 凸多边形(向量叉积)

文章目录1. 题目2. 解题1. 题目 给定一个按顺序连接的多边形的顶点&#xff0c;判断该多边形是否为凸多边形。 注&#xff1a; 顶点个数至少为 3 个且不超过 10,000。 坐标范围为 -10,000 到 10,000。 你可以假定给定的点形成的多边形均为简单多边形。 换句话说&#xff0c;保…

小案例:王者荣耀英雄对战python版代码(仅供娱乐)

直接上代码&#xff1a; #初始化用户信息 import randomprint("本比赛参赛英雄为&#xff1a;1老夫子 2典韦 3吕布") name int(input("请您选择出场英雄&#xff1a;"))if name 1:print("您本次选择的英雄为&#xff1a;老夫子——我会让你明白什么…

2016年10月计算机网络技术,2016年10月自考计算机网络技术练习题及答案(2)

2016年10月自考计算机网络技术练习题及答案(2)一、判断题(针对下面的描述&#xff0c;对的打‘√’&#xff0c;错的打‘X’)1.网络互联层的协议不包括ICMP协议.(错误)2.在同一个网络中&#xff0c;一个主机可有多个IP地址&#xff0c;多个主机也可同时使用一个IP地址.(错误)4.…

每日英语:Lighting: Twigs Shine in Home Decor

The humble twig is finding its way into high-end lighting. The sticks suggest rustic luxury -- think barn weddings and ski resorts -- but can also be found in modern interiors, giving spaces a clean, natural look. twigs:细枝&#xff0c;小树枝    high-e…

小案例:王者荣耀战绩查询系统代码赏析(自娱自乐)

直接上代码&#xff1a; #创建查询系统初始化信息 hero {} id 1000#创建初始化界面 def start():print("***"*9)print("欢迎您使用王者荣耀英雄查询系统&#xff1a;")print("***"*9)print("请按照以下提示信息进行操作&#xff1a;&quo…

LeetCode 1102. 得分最高的路径(优先队列BFS/极大极小化 二分查找)

文章目录1. 题目2. 解题2.1 优先队列BFS2.2 极大极小化 二分查找1. 题目 给你一个 R 行 C 列的整数矩阵 A。矩阵上的路径从 [0,0] 开始&#xff0c;在 [R-1,C-1] 结束。 路径沿四个基本方向&#xff08;上、下、左、右&#xff09;展开&#xff0c;从一个已访问单元格移动到任…

计算机语音未来发展趋势,语音助手横评:发展现状|未来展望

●语音助手现状Siri带动了业内人工智能语音的发展&#xff0c;各大手机厂商都纷纷推出自家的语音助手&#xff0c;不过总体来说&#xff0c;我们心中所期望的那个无所不能的人工智能机器人还是暂时没有办法出现。首先从国内的情况来看&#xff0c;我们使用语音助手的场景也大部…

说说 JavaScript 计时器的工作原理

原文&#xff1a;John Resig http://ejohn.org/blog/how-javascript-timers-work/ How JavaScript Timers Work 从基础的层面来讲&#xff0c;理解JavaScript的定时器是如何工作的是非常重要的。计时器的执行常常和我们的直观想象不同&#xff0c;那是因为JavaScript引擎是单…

LeetCode 1538. Guess the Majority in a Hidden Array

文章目录1. 题目2. 解题1. 题目 We have an integer array nums, where all the integers in nums are 0 or 1. You will not be given direct access to the array, instead, you will have an API ArrayReader which have the following functions: int query(int a, int b…

html5怎么跟安卓交互,html5怎么与android交互

满意答案Android中构建HTML5应用 使用WebView控件,与其他控件的使用方法相同在layout中使用一个标签,WebView不包括导航栏&#xff0c;地址栏等完整浏览器功能&#xff0c;只用于显示一个html. 在WebView中加载Web页面: (1)注意在manifest文件中加入访问互联网的权限&#xff1…

Attempt to write to a read-only database Sqlite

使用WCF做了一个中间层服务&#xff0c;准备把数据同步到Sqlite数据库中&#xff0c;在本地测试的时候没有问题&#xff0c;但放到服务器上却报出了 标题的错误。 StackOverFlow上说是数据库文件的权限问题&#xff0c;于是我把Users的写入权限分配给Users组&#xff0c;问题解…