码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 11 vs 98

时间:2015-04-10 10:59:38      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

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

1.使用c++11代码

for (auto ch : s) {
		auto ss = vsi[ch];
		vsi[ch].insert(i);
		i++;
	}

2.使用c++98代码

	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;
}

 

c++ 11 vs 98

标签:

原文地址:http://www.cnblogs.com/ltwyl/p/4413774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!