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容器,字符数组,整形数组等等中的元素顺序
复杂度: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,12.交换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]的字符
好了, 今天的分享就到这里了,还有补充的欢迎评论区交流哈~
如果有想看的算法面经也可以私聊我,想看的题目类型都可以哦~



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





