cyx的刷题笔记2022.03.12

字符串类型;

最近在刷字符串类型的题目,基本要求就是把输入的几个字符增加,删除,排序等一系列操作。

记录下学到的一些函数以及好用的思路。

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个字符对应你就麻爪子了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值