首页 > 其他分享 >20240317每日一题题解

20240317每日一题题解

时间:2024-03-18 15:11:25浏览次数:20  
标签:20240317 string STL 题解 每日 char str 字符串 reverse

20240317每日一题题解

Problem

Solution

提供两种写法,分别用到了string类c风格字符串

string 类是标准库中提供的用于处理字符串的类,避免了传统的 C 语言中使用字符数组来处理字符串时需要考虑的空间分配、长度控制等问题。

c风格字符串实际上就是一个字符数组char[],以字符 '\0' 结尾,用于表示字符串的结束。

Code

string类

#include<iostream>
#include<string>//string是一个字符串库,让我们可以使用string类型
using namespace std;
int main()
{
	string str;//声明一个string类型的变量,叫做str
	
	getline(cin,str);//获取一行输入,并将其存储在str变量中
	
	//注意不能用cin>>str,因为这里一行中可能会有空格。
	//cin>>str遇到空格就会停止读取,适合用来读取单词
	
	reverse(str.begin(),str.end());//使用STL中的reverse函数,将str中的字符进行反转
	
	//反转部分也可以写成:
	/*
	for(int i=0;i<str.size()/2;i++)
	{
		swap(str[i],str[str.size()-i-1]);
	}
	
	*/
	cout<<str;
	return 0;
}

c风格字符串

#include<iostream>
#include<cstring>//为使用c风格字符串的相关函数,比如strlen
using namespace std;

int main()
{
	char a[100000];//定义一个char数组,容量上限是100000
	
	cin.getline(a,100000);//读取一行字符,上限为100000
	
	int length=strlen(a);//用strlen得到字符数组a的长度
	
	for(int i=0;i<length/2;i++)
	{
		swap(a[i],a[length-i-1]);//用swap函数交换两个变量的值
	}
	
	//也可以用reverse(a,a+length);
	
	cout<<a;
	return 0;
}

补充

STL:reverse()

STL(Standard Template Library)是 C++ 标准库的一部分,提供了许多通用的数据结构和算法模板。STL 的设计目标是提供一组通用的数据结构和算法,以便开发者能够更高效地编写 C++ 程序。

STL 中有 std::reverse 函数,用于反转容器中元素的顺序。std::reverse 函数接受两个迭代器作为参数,表示要反转的范围,然后将这个范围内的元素顺序颠倒。

string对于char[]的优势

string 类型的大小的自动的可以动态调整字符串的长度,无需担心字符串长度超出预分配空间;而char[]需要手动定好最大长度,容易出现越界的情况。

string 类型提供了丰富的字符串操作函数,如 findsubstrappend 等,方便进行字符串操作;char[] 需要自行编写字符串操作函数,或者使用标准库中的函数,但使用起来不如 std::string 方便。

string 类型是 STL 中的一部分,可以方便地和其他 STL 容器、算法等一起使用,提高代码的通用性和可维护性。

标签:20240317,string,STL,题解,每日,char,str,字符串,reverse
From: https://www.cnblogs.com/Vanilla-chan/p/18080451

相关文章

  • CF999D Equalize the Remainders 题解
    题意给定一个长度为\(n\)的序列和一个模数\(m\),记\(c_i\)表示\(\bmodm\)后的结果为\(i\)的数的个数。现在可以使每个数增加\(1\),请问最少要操作多少次才能使所有\(c_i=\frac{n}{m}\)。并输出最后的序列。First.如何最小化操作次数由于每次操作会使\(c_{a_i\bm......
  • AT_hhkb2020_e Lamps 题解
    \(\mathtt{TAG}\):计数、数学变量说明下文中\(k\)指整洁方块个数。First.如何计数?一个方案一个方案地数肯定是不现实的,不妨反过来想:每个方块在多少个方案中被照亮。Second.如何求多少个方案首先预处理出有多少位置可以将\(s_{i,j}\)照亮。记为\(x\)。这个很简单,不......
  • 怎么在电脑上记录每日事项,并在桌面上显示便签记事本?
    作为一名教师兼班主任,我每天的工作繁忙且多样。从早晨的课程准备,到课间的学生辅导,再到课后的作业批改和家长沟通,每一项工作都需要我细心且有条理地完成。在这样的工作节奏下,如何高效管理每日事项,确保不遗漏任何重要任务,成为了我必须面对的挑战。电脑桌面便签、记事本插件,正是我应......
  • CF933-Div3 大致思路+题解
    A-RudolfandtheTicket纯水题暴力枚举直接过$code$#include<bits/stdc++.h>#definefo(x,y,z)for(int(x)=(y);(x)<=(z);(x)++)#definefu(x,y,z)for(int(x)=(y);(x)>=(z);(x)--)inlineintqr(){ charch=getchar();intx=0,f=1; for(;ch<'0......
  • 【题解】A18535.来自领导的烦恼
    题目跳转思路:本题可以使用动态规划或递归的方式来实现,本质上是一道01背包的变型题。假设一共有\(n\)名员工,每一位员工的技能水平用\(a[i]\)表示。要使得两个部门的员工技能总和之差最小,意思就是尽可能地将一个部门的技能之和”凑“到\(\sum\limits_{i=1}^{n}a[i]\times\frac{1}......
  • 【题解】A18536.星光交错的律动
    题目跳转思路:这道题可能跟博弈论有一点关系,没有学习过博弈论做起来应该问题也不大。思考一个问题,先手必胜的前提是什么?有关更多的内容可以前往:浅谈有向无环图先手必胜的前提是,在任何一种局面下,先手都有至少一种操作可以使后手处于必败的局面。若先手进行任何操作后,后手都可以......
  • 【题解】A18537.我心中珍藏的游戏
    题目跳转思路:题目问最多可以获得的额外伤害,其实就是询问在这些技能中,如何怎样选取一个最优的发动技能顺序使得攻击加成最大。我们可以把每一个技能看作成一个图的顶点,把每一个攻击加成看作图的边,权制为\(Ei,j\)。由于\(Ei,j\)与\(Ej,i\)相等,则可以将这个图视为无向图。可以样样......
  • 【题解】P2627 [USACO11OPEN] Mowing the Lawn G
    【题解】P2627[USACO11OPEN]MowingtheLawnG题目跳转数据量比较大,暴力肯定是不行的。只能考虑用动态规划的方式来做。这道题有许多dp设计的思路,这里提供两个:方法一:普通状态设计定义\(dp[i][1/0]\)表示截止遍历到第\(i\)个元素时,选择第\(i\)个元素或不选第\(i\)个元素可以......
  • cfRound933div3-E题解
    E-RudolfandkBridges题意:选择的桥在连续的行中,每个桥的支架安装位置是可以不一样的.做法:赛时也感觉也感觉是dp,但是害怕dp,就选择了逃避.往贪心方向想,认为每次到了每个跳板都要跳到最远距离,实际上这样是不行的.很明显,可能存在近一点的点花费更少。实际上是dp,而且也不......
  • [ABC258F] Main Street 题解
    题意:你要在平面直角坐标系中行走,每一步可以上下左右四个方向任意移动$1$,耗时$k$秒。特别地,存在若干条快速通道,若该步起点和终点均满足$x\equiv0\pmod{B}$或$y\equiv0\pmod{B}$,则认为该步是在快速通道上进行,仅需耗时$1$秒。询问从$(S_x,S_y)$到$(G_x,G_y)$最......