c++ 11 vs 98

在求最长子字符串中题中要遍历个上万字符数据

1.使用c++11代码

1
2
3
4
5
for (auto ch : s) {
        auto ss = vsi[ch];
        vsi[ch].insert(i);
        i++;
    }

2.使用c++98代码

1
2
3
4
for (int i = 0; i < s.length(); i++) {
    ch = s[i];
    vsi[ch].insert(i);
}

 这两段代码时间比较

1.c++ 11

2.c++ 98

下面是longest-substring-without-repeating-characters AC代码

复制代码
int lengthOfLongestSubstring(string s) 
{
    if (s.length() <= 1) return s.length();
    vector<set<int> > vsi(256);
    char ch;
    for (int i = 0; i < s.length(); i++) {
        ch = s[i];
        vsi[ch].insert(i);
    }
    int count = 0;
    int max = 0;
    for (int i = 0; i < s.size() - 1; i++) {
        count = 0;
        int endPos = -1;
        for (int j = i; j < s.size(); j++) {
            if ((endPos != -1 && j >= endPos)) {
                break;
            }
            auto pos1 = vsi[s[j]].find(j);
            pos1++;
            count++;
            if (pos1 != vsi[s[j]].end()) {
                int tmp = (*pos1) - i;
                if (tmp <= max) break;
                if (endPos > (*pos1) || endPos == -1) {
                    endPos = (*pos1);
                }
            }
        }
        if (max < count) {
            max = count;
        }
    }
    return max;
}
复制代码

 

posted on   unreall  阅读(189)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示