// 第一题限时10分钟,后三题三选一,限时20分钟
// 开腾讯会议,开视频做
// 1. 反转字符串,异常输出1
// #include <iostream>
// #include <string>
// using namespace std;
// int ReverseStr(char* pStr){
// if(pStr==NULL)
// return -1;
// int len=strlen(pStr);
// for(int i=0, j =len-1;i<j;i++,j--)
// {
// swap(pStr[i],pStr[j]);
// }
// returnn 0;
// }
// 2. 两数和为target,返回这两数下标,答案唯一
// #include <unordered_map>
// using namespace std;
// int *twoSum(int *nums, int numsSize, int target)
// {
// unordered_map<int, int> c;
// int *ans = new int[2];
// for (int i = 0; i < numsSize; i++)
// {
// if (c[target - nums[i]] > 0)
// {
// ans[0] = c[target - nums[i]] - 1;
// ans[1] = i;
// break;
// }
// c[nums[i]] = i + 1;
// }
// return ans;
// }
// 3. 按十进制反转32位有符号int
// #include <iostream>
// #include <string>
// #include <algorithm>
// using namespace std;
// int reverse(int x)
// {
// if (x == (1 << 31))
// return 0;
// bool neg = x < 0;
// if (neg)
// x = -x;
// std::string xStr = std::to_string(x);
// reverse(xStr.begin(), xStr.end());
// long long a = stoll(xStr);
// if (neg)
// a = -a;
// if (a < (1 << 31) || a > 0x7fffffff)
// return 0;
// return (int)a;
// }
// int main()
// {
// int n;
// cin >> n;
// cout << reverse(n);
// }
// 4. 无重复字符的最长子串的长度
#include<string.h>
int lengthOfLongestSubstring(char* s){
int n=strlen(s), ans=1, i=0, j=0;
int p[128];
memset(p,-1,128*sizeof(int));
while(j<n){
int ci=s[j];
if(p[ci]<i){
j++;
if(j-i>ans){
ans=j-i;
if(ans==128)
break;
}
}else{
i=p[ci]+1;
}
p[ci]=j;
}
return ans;
}
#23届秋招笔面经##北云科技##23届秋招#