计算两个字符串的最大公共字串的长度,字符不区分大小写

在此处说明一下,这道题的思路来源于在网上参考的别人的链接,感谢大佬们的指导~

https://blog.youkuaiyun.com/qq_25800311/article/details/81607168

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str1,str2;
    while(cin>>str1>>str2)
    {
        int len1=str1.length();
        int len2=str2.length();
        int max=0;
        int record[100][100];
        
        for (int i=0;i<len1;i++)
        {
            for (int j=0;j<len2;j++)
            {
                if (str1[i]==str2[j])
                {
                    if (i==0 || j==0)
                    {
                        record[i][j]=1;
                    }
                    else
                    {
                        record[i][j]=record[i-1][j-1]+1;
                    }
                }
                else 
                {
                    record[i][j]=0;
                }
                if (record[i][j]>max)
                    max=record[i][j];
            }
        }
        cout<<max<<endl;
    }
    return 0;
}

这里的重点还是关于构建二维数组的方法,需要仔细看看别人的做法是怎么样~

<think>嗯,用户现在问的是如何用JavaScript删除字符串中的特定子串。首先,我需要确认用户的需求。他们可能有一个字符串,里面包含某些需要的部分,想要去掉这些部分。例如,把“Hello World”中的“World”删掉,得到“Hello ”或者“Hello”(可能还要处理空格)。过用户没有具体说明是要删除所有出现的子串还是只第一次出现的,或者是否有其他条件,比如大小写敏感等。 接下来,我得考虑可能的解决方案。常见的JavaScript字符串处理方法有replace方法,可以使用字符串替换或者正则表达式。比如使用replace,但默认情况下它只会替换第一个匹配项,如果要替换所有,需要用正则表达式加上全局标志g。例如str.replace(/apple/g, ''),这样所有出现的“apple”都会被删除。 另外,用户可能太熟悉正则表达式,所以可能需要给出字符串替换的例子,以及如何处理大小写敏感的情况。比如是否要删除所有形式的“apple”,如“Apple”、“APPLE”等,这时候可以用i标志。 然后,还要考虑其他方法,比如split和join。比如将字符串子串分割成数组,然后再用空字符串连接起来。例如str.split('apple').join(''),这种方法同样有效,可能更容易理解,特别是对于熟悉正则表达式的用户。 另外,用户可能需要注意原始字符串是否会被修改,但JavaScript中字符串可变的,所以这些方法都会返回新字符串,原字符串变,需要提醒用户这一点。 还要考虑性能问题,如果处理非常大的字符串或者频繁操作,同方法的效率可能有差异,但通常来说,对于一般情况,replace和split/join都是可接受的。 可能需要举几个例子,展示同情况下的处理方式,比如删除所有匹配项,只删除第一个,或者区分大小写。同时,提醒用户注意特殊字符在正则表达式中的处理,比如如果子串包含特殊字符如.或者*,需要转义,避免正则表达式出错。 最后,总结一下几种方法,推荐使用replace加正则表达式,或者split和join,根据具体情况选择。可能用户的需求是简单的替换,所以给出最直接的方法,并提供扩展的例子,让他们可以根据需要调整。</think>在 JavaScript 中删除字符串中的特定子串,可以通过以下 4 种常用方法实现: --- ### 方法 1:`replace()` + 正则表达式(推荐) **删除所有匹配项**(区分大小写): ```javascript let str = "苹果apple香蕉APPLE"; let result = str.replace(/apple/g, ""); console.log(result); // "苹果香蕉APPLE" ``` **删除所有匹配项(区分大小写)**: ```javascript let result = str.replace(/apple/gi, ""); console.log(result); // "苹果香蕉" ``` --- ### 方法 2:`split()` + `join()` 通过拆分重组实现删除: ```javascript let str = "HelloWorldHello"; let result = str.split("World").join(""); console.log(result); // "HelloHello" ``` --- ### 方法 3:`replaceAll()`(ES2021+) 现代浏览器支持的新方法: ```javascript let str = "测试test测试TEST"; let result = str.replaceAll("test", ""); // 区分大小写 console.log(result); // "测试测试TEST" ``` --- ### 方法 4:自定义函数(处理复杂场景) ```javascript function deleteSubstring(str, target) { let regex = new RegExp(target, "g"); return str.replace(regex, ""); } let result = deleteSubstring("a-b-c-d-e-f", "-"); console.log(result); // "abcdef" ``` --- ### 特殊字符处理 如果要删除包含正则特殊字符(如 `.` `*` `+` 等)的子串,需要先转义: ```javascript let str = "1+1=2"; let target = "+"; let escapedTarget = target.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); let result = str.replace(new RegExp(escapedTarget, "g"), ""); console.log(result); // "11=2" ``` --- ### 各方法对比 | 方法 | 优点 | 缺点 | |-----------------|----------------------------|-------------------------| | `replace()` | 灵活支持正则表达式 | 需要处理正则转义 | | `split()+join()`| 简单直观,无需正则 | 性能略低 | | `replaceAll()` | 语义最清晰 | 兼容性要求 ES2021+ | | 自定义函数 | 可封装复杂逻辑 | 需要自行处理边界情况 | --- **实际应用建议**: 1. 优先使用 `replace()` + 正则表达式(适合大部分场景) 2. 处理简单字符串时可用 `split()+join()` 3. 需要兼容旧浏览器时避免使用 `replaceAll()` 4. 删除固定位置子串可结合 `substring()` 或 `slice()`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值