C++算法题中对于字符串的一些妙手

今天和大家分享一下某些c++算法面试题中针对字符串的一些投机取巧的函数,亲测好用~~~~~~~~~~~
所以花费了点时间精力整理了一下,希望能够帮到你们~~~~~~~~~

1.find()函数

假设我们有字符串a和b,那么a.find(b)是指在a这个字符串中查找b并返回b开头字母的位置,没查到就是-1

这个函数还是比较好用的,当你需要去找到一个字符串是否出现的时候可用,注意这里返回的下标,并不是字符串,那如何由下标得到字符串呢?
这里推荐第二个函数

2.substr()函数

这个应该大家并不陌生,而且用法也十分简单,用处就是截取某段字符串,而且注意返回值就是字符串。
string s2="0123456789";
string ans1=s2.substr(1); //ans1="123456789";
string ans2=s2.substr(1,3);//ans2="123"; 位置从1开始长度为3

3.isStingstream()函数

可以用在getline读取很长的字符串后使用isstringstream进行分割字符串。

他会自动把空格前和空格后的字符串进行分割,格式也是比较奇特,它本身也是一种数据类型

这个就比较好用了,对于输入的一些非常恶心的输入处理,就可以用下面这段代码,具体大家可以自行对着代码理解一下

#include<iostream>
#include<algorithm>
#include<sstream>        //istringstream 必须包含这个头文件#include<string>
using namespace std;
int a[10],cnt=0;
int main()
{
    string str="i am a boy";
    string str1="5 4 3 2 1 6 ";
    istringstream is(str);
    istringstream is1(str1);
    string s;
    while(is>>s)
         cout<<s<<endl;
    while(is1>>a[cnt++]);
    sort(a,a+cnt-1);
    for(int i=0;i<cnt-1;i++)
    {
        cout<<a[i]<<endl;
    }
}

4.reverse()函数

reverse函数用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素),reverse函数没有返回值
简而言之,可以在许多条件下使用.
复杂度:reverse()函数无返回值,时间复杂度O(n)
但是一定要注意,它反转的区间就是括号里的左右两区间,假设我要反转
a[1,2,3,4,5]中的2~4,那么代码应该是reverse(a+2,a+4+1),因为
它其实是反转区间[first,last)之间的
1.交换vector容器,字符数组,整形数组等等中的元素顺序
vector<int> v = {5,4,3,2,1};
int a[5]={1,2,3,4,5};
reverse(v.begin(),v.end());//v的值为1,2,3,4,5
reverse(a,a+n);//a的值为5,4,3,2,1
2.交换string字符串中元素的顺序
string str="www.mathor.top";
reverse(str.begin(),str.end());//str结果为pot.rohtam.wwww

5.isalpha()函数和isalnum()函数

isalpha()用来判断一个字符是否为字母,如果是字母则返回非零,否则返回零。
在codeforces等一些比较简单的代码题,就可以直接秒了,不用写if去判断啦
cout << isalpha('a'); //返回非零 
cout << isalpha('2'); //返回零 

6.islower函数和isupper()函数

islower()用来判断一个字符是否为小写字母,也就是是否属于 a~z。
cout << islower('a'); //返回非零 
cout << islower('2'); //返回零 
cout << islower('A'); //返回零 

isupper()和islower()相反,用来判断一个字符是否为大写字母
cout << isupper('a'); //返回零 
cout << isupper('A'); //返回非零  

7.tolower()函数与toupper()函数

7.1 tolower()

tolower()函数是把字符串都转化为小写字母

7.2 toupper()

touppre()函数是把字符串都转化为大写字母

其中需要注意的是:这两个函数的声明在头文件<cctype>中

8.insert()函数

str.insert(index,string);//从下标index开始添加字符串string
str.insert(index,string,3);//从下标index开始添加字符串string的前3个字符串,即下标3之前,[0,2]的字符
str.insert(index,string,1,3);//从下标index开始添加字符串string下标[1,3]的字符
好了, 今天的分享就到这里了,还有补充的欢迎评论区交流哈~
如果有想看的算法面经也可以私聊我,想看的题目类型都可以哦~

最后看到这的小伙伴点个赞吧!你的点赞真的很重要!还有评论俺都会回的喔~
喜欢的朋友也可以点个关注,这样我每次更新都能及时的看见了哦!
好了,下次再见啦~~~~~


#搞技术你要知道#
全部评论
写的挺好,但有些小错误哈,istringstream 必须包含这个头文件#include<sstream>
2 回复 分享
发布于 2022-06-13 11:17
想问一下c++中将string转整型需要调用什么方法,我找了stoi,编译总是失败,注意是C++不是其他环境。大佬看到了捞一把吧
1 回复 分享
发布于 2022-07-21 15:16
好帖,有学到!
1 回复 分享
发布于 2022-06-18 19:22
1 回复 分享
发布于 2022-06-16 10:06
有用,好文~
1 回复 分享
发布于 2022-06-13 18:41
好像有个错误,reverse那里应该是reverse(a+1,a+4)
1 回复 分享
发布于 2022-06-13 15:52
当时做笔试的时候,确实很有帮助
1 回复 分享
发布于 2022-06-12 11:40
为什么我加了string头文件还是无法编译通过stoi方法
点赞 回复 分享
发布于 2022-07-22 11:19
妙手真是紧跟时事了hhhhh🤣🤣🤣
点赞 回复 分享
发布于 2022-06-12 22:14
真不错👍👍👍
点赞 回复 分享
发布于 2022-06-12 11:54

相关推荐

机械打工仔:第一位颇有孟德之志
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-23 18:30
美团优选内容调整,屁股都没离开座椅呢,多多买菜来挖了
熬夜脱发码农:哈,拼多多真挖人是吧
投递美团等公司9个岗位 >
点赞 评论 收藏
分享
评论
26
65
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务