字符串:手写拼接

校选赛中我出的一道题,放在了第二题的位置,题目的思路来源于在求解单词接龙这道题时,处理单词串拼接时的实现细节,方法有很多,这里介绍一种我想到的。

对于abc和bce,将他们拼在一起形成abcbce,之后去掉中间重叠的部分,就变成了abce,编程完成这一细节实现。

我们首先建立两个空子串,然后存一下两个串的长度的最小值,然后设置两个指针,一个枚举第一个字符串中的每一个字符,从后往前枚举,一个枚举第二个字符串中的每一个字符,从前往后枚举

    for(int i=0;i<len;i++)
    {
        c=a[len1-i-1]+c;
        d=d+b[i];
        if(c==d)
            tmp=c;
    }

看上述代码,每枚举到一个字符,就将其与空字符串连接,一个一个字符地去加。

每次加都判断一下当前两个新字符串是否相等,如果相等就把相等的这个结果存下来。

找完之后,我们将第一个字符串的后半部分去掉,去掉多少呢?就去掉之前存下来的结果的长度。同理,我们把第二个字符串的前半部分去掉,同样也去掉当前那个临时存下的结果的长度。

len=tmp.size();
    for(int i=0;i<len1-len;i++)
        ans=ans+a[i];
    for(int i=0;i<len;i++)
        ans=ans+tmp[i];
    for(int i=len;i<len2;i++)
        ans=ans+b[i];

我们的结果就变成了第一个字符串的前半部分+重叠部分(临时存下的结果)+第二个字符串的后半部分

完整的实现代码如下:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 string a,b;
 5 int MIN(int x,int y)
 6 {
 7     return x<y?x:y;
 8 }
 9 int main()
10 {
11     cin>>a>>b;
12     int len1=a.size();
13     int len2=b.size();
14     string c="",d="";
15     int len=MIN(len1,len2);
16     string tmp="";
17     string ans="";
18     for(int i=0;i<len;i++)
19     {
20         c=a[len1-i-1]+c;
21         d=d+b[i];
22         if(c==d)
23             tmp=c;
24     }
25     len=tmp.size();
26     for(int i=0;i<len1-len;i++)
27         ans=ans+a[i];
28     for(int i=0;i<len;i++)
29         ans=ans+tmp[i];
30     for(int i=len;i<len2;i++)
31         ans=ans+b[i];
32     cout<<ans;
33     return 0;
34 } 

 

转载于:https://www.cnblogs.com/aininot260/p/9270899.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LambdaQueryWrapper 是 Mybatis Plus 中的一个查询条件封装类,它提供了基于 Lambda 表达式的查询方式,使得查询语法更加优雅。LambdaQueryWrapper 通过使用 Lambda 表达式来实现各种查询条件的拼接,例如 where、and、or、in、like、between 等条件。相比于传统的 QueryWrapper,LambdaQueryWrapper 的优点主要有以下几个方面:代码简洁易读,使用 Lambda 表达式可以避免手写字符串的繁琐和容易出错;类型安全,LambdaQueryWrapper 在编译期间就能够捕获类型错误,避免运行时出现类型错误;更加灵活,LambdaQueryWrapper 支持链式调用,支持多个条件之间的 and 和 or 关系组合,支持子查询等复杂查询操作。然而,LambdaQueryWrapper 基于 Lambda 表达式实现,可能存在一些性能问题,在大数据量查询时可能会影响查询性能。因此,在少量数据查询或需要更加灵活的查询操作时,可以考虑使用 QueryWrapper。QueryWrapper 是基于字符串的实现,可以直接拼接 SQL 字符串,支持 SQL 函数和更多高级查询操作。但是,QueryWrapper 的缺点是代码可读性和可维护性较差,手写 SQL 字符串容易出错,并且不易于维护和修改;同时,使用字符串拼接 SQL 也容易受到 SQL 注入攻击,需要特别注意防范;另外,编译期不能捕获类型错误,需要在运行时才能发现类型错误。综上所述,LambdaQueryWrapper 提供了更加优雅和类型安全的查询方式,而 QueryWrapper 则更加灵活和适合兼容和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值