首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LeetCode meituan-006. 小团的神秘暗号

LeetCode meituan-006. 小团的神秘暗号

作者头像
Michael阿明
发布于 2021-09-06 03:40:27
发布于 2021-09-06 03:40:27
26100
代码可运行
举报
运行总次数:0
代码可运行

文章目录

1. 题目

小团深谙保密工作的重要性,因此在某些明文的传输中会使用一种加密策略,小团如果需要传输一个字符串 S ,则他会为这个字符串添加一个头部字符串和一个尾部字符串。

头部字符串满足至少包含一个 “MT” 子序列,且以 T 结尾。 尾部字符串需要满足至少包含一个 “MT” 子序列,且以 M 开头。

例如 AAAMT 和 MAAAT 都是一个合法的头部字符串,而 MTAAA 就不是合法的头部字符串。 很显然这样的头尾字符串并不一定是唯一的,因此我们还有一个约束,就是 S 是满足头尾字符串合法的情况下的最长的字符串。 很显然这样的加密策略是支持解码的,给出一个加密后的字符串,请你找出中间被加密的字符串 S 。

代码语言:javascript
代码运行次数:0
运行
复制
格式:

输入:
- 输入第一行是一个正整数 n ,表示加密后的字符串总长度。
- 输入第二行是一个长度为 n 的仅由大写字母组成的字符串 T 。
输出:
- 输出仅包含一个字符串 S 。

示例:
输入:
     10
     MMATSATMMT
输出:SATM

提示:
1 <= n <= 100000
请注意,本题需要自行编写「标准输入」和「标准输出」逻辑,
以及自行 import/include 需要的 library

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

2. 解题

  • 贪心,找最短的前后缀,正向找到一次MT,反向找到一次TM
代码语言:javascript
代码运行次数:0
运行
复制
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    string s;
    cin >> n;
    cin >> s;
    bool m = false, t = false;
    int i = 0, j = s.size()-1;
    for( ; i < s.size(); ++i)
    {
        if(s[i]=='M' && !m)
            m = true;
        else if(s[i]=='T' && m)
        {
            i++;
            break;
        }
    }
    for( ; j >= 0; --j)
    {
        if(s[j]=='T' && !t)
            t = true;
        else if(s[j]=='M' && t)
            break;
    }
    cout << s.substr(i, j-i);
    return 0;
}

0 ms 3.6 MB C++


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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
LeetCode 1930. 长度为 3 的不同回文子序列(计数)
子序列 是由原字符串删除其中部分字符(也可以不删除)且不改变剩余字符之间相对顺序形成的一个新字符串。
Michael阿明
2021/09/06
1.1K0
LeetCode 2002. 两个回文子序列长度的最大乘积(状态压缩+枚举状态子集+预处理)
给你一个字符串 s ,请你找到 s 中两个 不相交回文子序列 ,使得它们长度的 乘积最大 。 两个子序列在原字符串中如果没有任何相同下标的字符,则它们是 不相交 的。
Michael阿明
2022/01/07
4350
LeetCode 2002. 两个回文子序列长度的最大乘积(状态压缩+枚举状态子集+预处理)
LeetCode 115. 不同的子序列(DP)
一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)
Michael阿明
2021/02/19
3630
LeetCode 1910. 删除一个字符串中所有出现的给定子字符串
给你两个字符串 s 和 part ,请你对 s 反复执行以下操作直到 所有 子字符串 part 都被删除:
Michael阿明
2021/09/06
7690
LeetCode 1332. 删除回文子序列
给你一个字符串 s,它仅由字母 ‘a’ 和 ‘b’ 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。
Michael阿明
2020/07/13
7380
LeetCode 1332. 删除回文子序列
LeetCode meituan-001. 小美的用户名
小美是美团的前端工程师,为了防止系统被恶意攻击,小美必须要在用户输入用户名之前做一个合法性检查,一个合法的用户名必须满足以下几个要求:
Michael阿明
2021/09/06
2950
LeetCode 1781. 所有子字符串美丽值之和
比方说,"abaacc" 的美丽值为 3 - 1 = 2 。 给你一个字符串 s ,请你返回它所有子字符串的 美丽值 之和。
Michael阿明
2021/09/06
5220
LeetCode 第 32 场双周赛(983/2957,前33.2%)
全国排名: 983 / 2957,33.2%;全球排名: 2962 / 10463,28.3%
Michael阿明
2021/02/19
3670
LeetCode 1771. 由子序列构造的最长回文串的长度(最长回文子序)
返回可按上述方法构造的最长 回文串 的 长度 。 如果无法构造回文串,返回 0 。
Michael阿明
2021/09/07
6260
LeetCode 647. 回文子串(DP/中心扩展)
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。
Michael阿明
2020/07/13
6120
LeetCode字符串高频题目整理(持续更新中)
  给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
嵌入式与Linux那些事
2021/05/20
1.4K0
LeetCode 1297. 子串的最大出现次数
给你一个字符串 s ,请你返回满足以下条件且出现次数最大的 任意 子串的出现次数:
Michael阿明
2020/07/13
7040
LeetCode 664. 奇怪的打印机(区间DP)
我的CSDN博客地址 https://michael.blog.csdn.net/
Michael阿明
2021/09/06
2770
c++ LeetCode (初级字符串篇) 九道算法例题代码详解(二)
原文链接:https://www.cnblogs.com/DOMLX/p/11089327.html
徐飞机
2019/07/01
1.2K0
用javascript分类刷leetcode20.字符串(图文视频讲解)2
方法1.截取字符串,循环字符串,遇到#就截掉最后一个字符,循环完毕之后,最后比较两个去除掉#退格之后的字符串是否相等,时间复杂度O(m+n),m、n是两个字符串的长度。空间复杂度O(1)
hellocoder2028
2023/01/04
8100
【算法专题】动态规划之回文子串问题
题目:给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。
YoungMLet
2024/03/01
1870
LeetCode 44. 通配符匹配(DP)
1. 题目 给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。 '?' 可以匹配任何单个字符。 '*' 可以匹配任意字符串(包括空字符串)。 两个字符串
Michael阿明
2020/07/13
6570
【CPP】《程序员面试金典》习题(1)——数组与字符串
意识到该刷刷算法题的自己,面临压力自然想到LeetCode,但是面对和LeetCode那数千道题,时间有限下自然要更有针对性些,自然就看到《程序员面试金典》。
ZifengHuang
2020/07/29
1.1K0
LeetCode 522. 最长特殊序列 II
给定字符串列表,你需要从它们中找出最长的特殊序列。 最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。
Michael阿明
2020/07/13
5340
LeetCode 522. 最长特殊序列 II
LeetCode 1638. 统计只差一个字符的子串数目(DP)
给你两个字符串 s 和 t ,请你找出 s 中的非空子串的数目,这些子串满足替换 一个不同字符 以后,是 t 串的子串。 换言之,请你找到 s 和 t 串中 恰好 只有一个字符不同的子字符串对的数目。
Michael阿明
2021/02/19
5210
推荐阅读
相关推荐
LeetCode 1930. 长度为 3 的不同回文子序列(计数)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档