​LeetCode刷题实战320:列举单词的全部缩写

简介: 算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 列举单词的全部缩写,我们先来看题面:https://leetcode-cn.com/problems/generalized-abbreviation/

Write a function to generate the generalized abbreviations of a word.

请你写出一个能够举单词全部缩写的函数。注意:输出的顺序并不重要。


示例

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

解题


迭代的方法,在之前出现过的字符串的基础上,接着更新新的可能的字符串的组成。

class Solution {
public:
    vector<string> generateAbbreviations(string word) {
        int len=word.size();
        vector<string> res;
        res.push_back("");//初始结果
        for(int i=0;i<len;++i){
            string w=word.substr(i,1);//对每个字符位置进行处理
            int nums_s=res.size();
            //对之前出现过的每种结果进行更新
            for(int j=0;j<nums_s;++j){
                string tmp=res[j];
                res[j]+=w;//更新加上当前字符的方式
        //更新转成当前数字的方式
                int k=tmp.size();
                //找出当前字符串的末尾的数字
                while(k>0&&isdigit(tmp[k-1])){
                    --k;
                }
                //根据当前字符串的末尾的字符是否是数字的情形,更新
                if(k==tmp.size()){
                    res.push_back(tmp+"1");
                }
                else{
                    res.push_back(tmp.substr(0,k)+to_string(1+stoi(tmp.substr(k,tmp.size()-k))));
                }
            }
        }
        return res;
    }
};

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

相关文章
|
16天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
16天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
17天前
|
索引
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
【LeetCode刷题】二分查找:山脉数组的峰顶索引、寻找峰值
|
17天前
|
算法
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
【LeetCode刷题】滑动窗口解决问题:串联所有单词的子串(困难)、最小覆盖子串(困难)
|
17天前
|
算法 容器
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
|
17天前
【LeetCode刷题】专题三:二分查找模板
【LeetCode刷题】专题三:二分查找模板
【LeetCode刷题】专题三:二分查找模板
|
2天前
|
算法 测试技术 索引
力扣经典150题第三十二题:串联所有单词的子串
力扣经典150题第三十二题:串联所有单词的子串
5 0
|
2天前
|
算法
力扣经典150题第二十一题:反转字符串中的单词
力扣经典150题第二十一题:反转字符串中的单词
6 0
|
2天前
|
算法
力扣经典150题第十九题:最后一个单词的长度
力扣经典150题第十九题:最后一个单词的长度
6 0
|
17天前
【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积
【LeetCode刷题】前缀和解决问题:742.寻找数组的中心下标、238.除自身以外数组的乘积