字符串类型;
最近在刷字符串类型的题目,基本要求就是把输入的几个字符增加,删除,排序等一系列操作。
记录下学到的一些函数以及好用的思路。
1、substr()截取
#include<string>
string str = 'abcdefghijklmn';
string str1(str,0,5);
string str2 = str.substr(0,5);
string str3 = str.substr(5)
如图所示str1是‘abcde’;str2是‘abcde’;str3是‘fghijklmn’。
这就是substr函数的用法。
2、replace()替换
例句
#include<iostream>
str = 'abcdefghijklmn'
replace(3,1,'C')
replace(i,n,str)将第i个字符开始的(注意i从0开始)n个字符替换为str。那么例句中的结果应该是str=‘abcCefghijklmn’
3、字典法
这属实是偷懒小窍门了,遇到怎么都编译不过的可以考虑用这个,但不要依赖,做题是为了成长。。具体思路是如下:HJ29加解密码
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string strlist1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
string strlist2 = "BCDEFGHIJKLMNOPQRSTUVWXYZAbcdefghijklmnopqrstuvwxyza1234567890";
void encoder(string str)
{
for(int i=0; i<str.size(); i++)
{
for(int j=0; j<strlist1.size(); j++)
{
if(str[i] == strlist1[j])
{
str[i] = strlist2[j];
break;
}
}
}
cout<<str<<endl;
}
void decoder(string str)
{
for(int i=0; i<str.size(); i++)
{
for(int j=0; j<strlist2.size(); j++)
{
if(str[i] == strlist2[j])
{
str[i] = strlist1[j];
break;
}
}
}
cout<<str<<endl;
}
int main()
{
string str1, str2;
while(cin>>str1>>str2)
{
encoder(str1);
decoder(str2);
}
return 0;
}
好处是方便省内存,无脑编。坏处是需要字典够小,比如给你5000个字符对应你就麻爪子了。