【字符串处理、STLset】获取set首元素值的方法

news/2025/2/13 16:13:34/文章来源:https://www.cnblogs.com/Tshaxz/p/18713838

获取set首个元素值的方法

作用:因为STLset有自动排序的功能,所以有时需要获取set的首元素作为字典序最小来进一步处理。
方法:在h.begin()前面加星号*即可获取set首个元素的值

set<char> h;
cout << *h.begin();

例题:字符串化繁为简

image

示例1
输入

()abd

输出

abd

说明
输入字符串里没有被小括号包含的子字符串为"abd",其中每个字符没有等效字符,输出为"abd"。

示例2
输入

(abd)demand(fb)for

输出

aemanaaor

说明
等效字符集为('a','b','d','f'),输入字符串里没有被小括号包含的子字符串集合为 "demandfor",将其中字符替换为字典序最小的等效字符后输出为:"aemanaaor"。

示例3
输入

()happy(xyz)new(wxy)year(t)

输出

happwnewwear

说明
等效字符集为('x','y','z','w'),输入字符串里没有被小括号包含的子字符串集合为"happynewyear",将其中字符替换为字典序最小的等效字符后输出为:"happwnewwear"。

示例4
输入

()abcdefgAC(a)(Ab)(C)

输出

AAcdefgAC

说明
等效字符集为('a','A','b'),输入字符里没有被小括号包含的子字符串集合为"abcdefgAC",将其中字符替换为字典序最小的等效字符后输出为:"AAcdefgAC"。

示例5
输入

never(dont)give(run)up(f)()

输出

devedgivedp

C++代码

// Problem: #OD374. 字符串化繁为简
// Contest: Hydro
// Memory Limit: 256 MB
// Time Limit: 1000 ms
#include <iostream>
#include <set>using namespace std;
using PII = pair<int, int>;int n;
set<char> h; // 存等效字符集
string t;    // 存非括号内字符void solve(string &s)
{for (char &x : s){if (h.count(x)) cout << *h.begin(); // 输出set的首元素的值else cout << x;}
}void get(string &s) // 获取等效字符集
{t = "";for (int i = 0; i < n; i++) // 获取字符数量>1的字符集合{if (s[i] == '('){int j = i + 1;string word = "";while (j < n && isalpha(s[j])) word += s[j++];if (word.size() > 1){for (char &x : word) h.insert(x);}i = j;}else if (isalpha(s[i])) t += s[i];}for (int i = 0; i < n; i++) // 检查字符数量=1的字符集合是否含等效字符{if (s[i] == '('){int j = i + 1;if (s[j + 1] == ')'){char x = s[j];if (h.count(tolower(x)) || h.count(toupper(x))){h.insert(x);}}}}
}int main()
{ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);string s;cin >> s;n = s.size();get(s);solve(t);return 0;
}

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

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

相关文章

javascript语法1

紫色部分可省略 浏览器控制台要打开开发者工具(f12)才能看见

组合class

集合容斥: 硬币购物 方程

并发编程 - 线程同步(七)之互斥锁Monitor

学习C#互斥锁Monitor,注意避免锁定值类型和try/finally错误,善用TryEnter避免长时间持锁,以及使用Wait、Pulse等方法实现生产者-消费者模式。示例代码和测试方法在代码库。通过前面对锁lock的基本使用以及注意事项的学习,相信大家对锁的同步机制有了大致了解,今天我们将继…

BI大屏自适应的构建

对于大屏自适应,网上有基于Vue编写的大屏自适应逻辑代码,本文讲解如何在一个初始化大屏的页面中使用自适应逻辑代码,以及如何解决自适应后大屏左右两边留白的问题。 首先,在编写的初始化html文件中,需要引入离线版的vue JS包和大屏自适应的js代码:1 <script src="…

SQLserver开启CDC功能

1.查询数据库是否已经开启CDC功能 select is_cdc_enabled,name from sys.databases where name=databasename; 开启为1,未开启为02.库级别开启CDC功能 use databasename GO exec sys.sp_cdc_enable_db 3.再次确认CDC功能是否开启 select is_cdc_enabled,name from sys.databas…

N1Junior

N1JuniorGavatar 核心逻辑如下: upload.php <?php require_once common.php;$user = getCurrentUser(); if (!$user) header(Location: index.php);$avatarDir = __DIR__ . /avatars; if (!is_dir($avatarDir)) mkdir($avatarDir, 0755);$avatarPath = "$avatarDir/{$…

软件自启动取消权限弹窗询问设置

方案1:创建任务计划--启动软件取消UAC权限询问弹窗 1.1 打开任务计划 右键“我的电脑”--“管理”,打开任务计划,如图所示1.2 创建任务计划1.2.1 常规参数设置1.2.2 触发器设置1.2.3 操作设置最后按确定即可完成任务计划创建,至此电脑重启登陆后,软件都会自动启动 方案2:…

hgame 第一周

hgame 第一周Pacman 前端反调试题,找到了一个串.aGFldTRlcGNhXzR0cmdte19yX2Ftbm1zZX0=.base64解码后百思不得其解,后来发现还有一个栅栏加密,纯烂活... hgame{u_4re_pacman_m4ster} BandBomb const express = require(express); const multer = require(multer); const fs = r…

Deepseek学习随笔(2)--- 快速上手DeepSeek

注册与登录 要开始使用 DeepSeek,你需要先注册一个账号。以下是具体步骤:访问 DeepSeek 官网。 使用邮箱或手机号注册账号。 登录后进入控制台,开始使用。控制台功能介绍 DeepSeek 的控制台提供了丰富的功能,帮助你更好地使用工具:对话窗口:在这里输入你的问题或指令,De…

【原创】大数据治理入门(4)《保护数据隐私:大数据治理的最佳实践》入门必看 高赞实用

在大数据治理中,保护数据隐私是至关重要的。通过了解和遵守相关法规,采用数据脱敏、匿名化和隐私计算等技术手段,企业可以有效降低数据隐私泄露的风险,提升用户的信任度和企业的竞争力。希望本文能够为您提供全面的数据隐私保护指南。保护数据隐私:大数据治理的最佳实践 引…

【原创】大数据治理入门(1)《大数据治理入门:为什么重要?》入门必看 高赞实用

随着互联网的快速发展,数据的生成和积累速度达到了前所未有的水平。大数据通常被定义为规模巨大、类型多样且生成速度快的数据集合。这些数据不仅包括结构化数据(如数据库中的表格数据),还包括非结构化数据(如文本、图片、视频等)。大数据的重要性在于其能够帮助企业更好…