首页 > 其他分享 >面试题 17.05. 字母与数字

面试题 17.05. 字母与数字

时间:2023-04-08 23:00:53浏览次数:48  
标签:面试题 数字 idx int 字母 len 17.05 array mx

题目链接:面试题 17.05. 字母与数字

方法:TwoSum

解题思路

(1)将字符量化为 \(+1\),数字量化为 \(-1\),那么当子数组的和\(subSum = 0\)时,表示子数组中的字符和数字的数量相等;
(2)\(subSum = s[j] - s[i],j >= i,i = 1, 2, ...\),\(s[i]\)表示前\(i\)个元素的和;
(3)即找\(s[j] - s[i] = 0\),也即\(s[j] = s[i]\),且 \((j - i)\) \(is\) \(max\)。

代码

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
*/

复杂度分析

时间复杂度:\(O(n)\);
空间复杂度:\(O(n)\)。

相关题目

1. 两数之和
1590. 使数组和能被 P 整除—题解:1590. 使数组和能被 P 整除(TwoSum !!!)

标签:面试题,数字,idx,int,字母,len,17.05,array,mx
From: https://www.cnblogs.com/lxycoding/p/17299483.html

相关文章

  • 面试题 05.02. 二进制数转字符串
    题目链接:面试题05.02.二进制数转字符串方法:找规律解题思路(1)题目要求:将一个\(0-1\)之间的实数通过二进制进行表示,并通过字符串形式输出。(2)由于二进制的小数只能表示\(\frac{1}{2}\frac{1}{4}\frac{1}{8}...\frac{1}{2^n}\)数之间的和的十进制小数,因此有些十进制小数不能......
  • #yyds干货盘点# LeetCode面试题:爬楼梯
    1.简述:假设你正在爬楼梯。需要n 阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶+1阶2.1阶......
  • 面试题百日百刷-HBase中HTable API有没有线程安全问题,在程序是单例还是多例?
    锁屏面试题百日百刷,每个工作日坚持更新面试题。请看到最后就能获取你想要的,接下来的是今日的面试题: 1.HBase内部机制是什么?Hbase是一个能适应联机业务的数据库系统物理存储:hbase的持久化数据是将数据存储在HDFS上。存储管理:一个表是划分为很多region的,这些region分布式地......
  • 面试题百日百刷-HBase HRegionServer宕机如何处理
    锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题: 1.HBase......
  • 1138. 字母板上的路径
    题目链接:1138.字母板上的路径方法:模拟解题思路为了使得移动次数最小,每次移动方式为,"直角移动"(如下图),但由于\(z\)字母位置的特殊性,当其作为目标字母和当前字母时,为了避免越界问题,需要调整\(x\)和\(y\)方向上移动的顺序。代码classSolution{public:stringalph......
  • 免费分享前端面试题,vue面试题,TypeScript基础知识点 PDF格式
    免费分享前端资料,面试题,电子书接前端开发,带徒弟,一对一教学,远程协助,bug修改微信:......
  • 文件夹批量改名工具,将首写字母改为大写
    怎么处理文件,比如快速修改文件夹名称,将首写字母改为大写?不知道如何操作的宝贝们,下面请随小编一起来试试吧,希望能给大家带来帮助。所需工具一台电脑文件夹素材若干操作步骤步骤1:在处理之前,最好将需要修改的文件夹都保存在同一个文件夹之中,方便提取步骤2:进入【文件批量改名高手】,单击......
  • #yyds干货盘点# LeetCode面试题:x 的平方根
    1.简述:给你一个非负整数x,计算并返回 x 的算术平方根。由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。注意:不允许使用任何内置指数函数和算符,例如pow(x,0.5)或者x**0.5。 示例1:输入:x=4输出:2示例2:输入:x=8输出:2解释:8的算术平方根是2.82842...,由......
  • Web前端开发必看的100道大厂面试题
    1.说说gulp和webpack的区别开放式题目Gulp强调的是前端开发的工作流程。我们可以通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序,来让Gulp执行这些task,从而构建项目的整个前端开发流程。通俗一点来说,“Gulp就像是一......
  • 力扣 面试题 10.11. 峰与谷
    面试题10.11.峰与谷在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5,8,4,2,3,4,6}中,{8,6}是峰,{5,2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。示例:输入:[5,3,1,2,3]输出: [......