leetcode 3
无重复字符的最长子串
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.empty()) return 0;
if(s.length()==1) return 1;
map<char,int> ma;
int p1 = 0,p2 = 0;
int maxLength = 0;
while(p2<s.length()){
if(ma.count(s[p2])){
maxLength = max(maxLength,p2-p1);
ma.erase(s[p1]);
p1++;
}
else{
ma[s[p2]]=0;
p2++;
}
}
maxLength = max(maxLength,p2-p1);
return maxLength;
} //两个指针,尾指针检测到重复,就计算长度,然后头指针加一,继续计算。
};
#string的用法
string ss[10];
string ss(10,'c');
string.empty();
string.length();
ss.push_back('a');#尾插一个字符
ss.insert(6,str,3,4);#str从3开始的后4个字符插入到ss的第6个位置。
ss.erase(10,8);#删除ss第10个后面的8个字符
ss.append(str,6,3);#追加str第6个后面的3个字符
ss += str.c_str();
ss.replace(19,6,str,7,6); #ss第19个后的6个字符被str第7个后的6个字符代替
ss.assign(str,10,8);#str第10个后的8个字符赋值给ss
found=ss.find(str,found+1,6);#ss从found+1查找str的前6个字符。
ss.rfind();#从后往前找,索引仍是从前往后
str1.compare(str2);#< -1,= 0,> 1
map的用法
map<int,string> m = {
{ 2015, "Jim" },
{ 2016, "Tom" },
{ 2017, "Bob" } };
m[2015]="fsd";
m.erase(2015);
m.count(2015);
m.clear();
m.size()
set的用法
set<int> s={1,2,3}
s.insert(4)