题目
无重复字符的最长子串
以滑动窗口的方式来寻找子串, 左指针在遇到重复元素时更新, 右指针即遍历指针i. 时间复杂度 O(n)
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
length = l = r = 0
while r<len(s):
if s[r] not in s[l:r]:
r += 1
length = max(length, r-l)
else:
l += 1
return length
用python做算法实现,效率不高,但是很好理解。
替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
void replaceSpace(char *str,int length) {
// 返回类型 void 说明不能开辟内存,只能在原来内存上修改
// 避免覆盖,只能逆序遍历
// 统计空格个数
int cnt=0;
for(int i=0; i<length; ++i){
if(str[i] == ' ') cnt++;
}
if(cnt==0) return; // 没有空格
// 逆序遍历
int i(length), j(length+2*cnt); // 字符串结尾为终止符'\0'
for(i; i>=0; --i){
if(str[i] == ' '){
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
}
else{
str[j--] = str[i];
}
}
}
};