2022CSP-J集训测试Round 1

Name: 2022CSP-J集训测试Round 1

Contest Time: 2022-6-30 18:30 ~ 21:30


Problem A. 不重最长子串

Background

Special for beginners, ^ _ ^

Description

给定一个字符串 s s s,请你找出其中不含有重复字符的最长子串的长度。

Format

Input

一行,一个字符串 s s s,长度在 0 ∼ 50000 0 \sim 50000 050000 之间,由英文字母、数字和空格组成。

Output

输出一个整数,为不含有重复字符的最长子串的长度。

Samples

Test1

abcabcbb
3
Hint1

因为无重复字符的最长子串是 abc,所以其长度为 3。

Test2

bbbbb
1
Hint2

因为无重复字符的最长子串是 b,所以其长度为 1。

Test3

pwwkew
3
Hint3

因为无重复字符的最长子串是 wke,所以其长度为 3。

Notice

你的答案必须是 子串 的长度,pwke 是一个子序列,不是子串。

Limitation

1s, 1024KiB for each test case.

Code

#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>

using namespace std;

string str;
unordered_map <char, int> st;

int main ()
{
   
    ios :: sync_with_stdio (NULL);
    getline (cin, str);
    int l = 0, r, ans = 0;
    for (r = 0; r < str.size (); ++r)
    {
   
        l = max (l, st[str[r]]);
        ans = max (ans, r - l + 1);
        st[str[r]] = r + 1;
    }
    cout << ans << endl;
    return 0;
}

Problem B. 小J的加密算法

Background

Special for beginners, ^ _ ^

Description

上大学了,小J学会了一种加密算法,这种算法可以根据一个行数 mm,将一个字符串进行重新排列,变成无法读懂的密文。

例如:给定一个字符串 PAYPALISHIRING,行数 3,将其进行从上到下,从左到右的Z字形排列如下:

P   A   H   N
A P L S I I G
Y   I   R

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:PAHNAPLSIIGYIR

Format

Input

一个由英文字母及英文标点符号组成的字符串 s s s 及一个行数 m m m ( 1 ≤ m ≤ 1000 ) (1\le m\le 1000)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值