面试题 17.05. 字母与数字
题目链接:面试题 17.05. 字母与数字
方法:TwoSum
解题思路
(1)将字符量化为
(2)
(3)即找
代码
class Solution {
public:
vector<string> findLongestSubarray(vector<string>& array) {
int n = array.size();
int s = 0, mx_len = 0, l = 0;
unordered_map<int, int> idx{{s, 0}};
for (int i = 1; i <= n; i ++ ) {
s += (array[i - 1][0] >> 6 & 1) * 2 - 1; // 字符 +1,数字 -1
if (idx.count(s)) {
int curlen = i - idx[s];
if (curlen > mx_len) {
mx_len = curlen;
l = idx[s];
}
} else {
idx[s] = i;
}
}
return {array.begin() + l, array.begin() + l + mx_len};
}
};
/*
关于array[i - 1][0] >> 6 & 1操作:
对于字母的ASCII码为 01xx xxxx,而数字的ASCII码为 0011 xxxx;
1、当字母执行上述操作后,结果为 1
2、当数字执行上述操作后,结果为 0
*/
复杂度分析
时间复杂度:
空间复杂度:
相关题目
分类:
leetcode题解
标签:
two sum
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具