20220215 华为 OD 机试
华为 OD 机试
第一道题
第一道是快乐消消乐,就是给定一个字符串将相邻的两个字符进行消除,最后返回消除后字符串的总长数
例子: ggA, 结果 1
消除 gg 后剩下 A ,因此最后结果 1
例子2:abccbe,结果 2
消除 cc 后字符串变成 abbe 在消除 bb,变 ae,因此结果 2
解法:
前面一直没有看到例子2,走了很多弯路,一开始理解成了消除重复字符,浪费了一些时间 =-=!
我的解法是使用栈,在循环字符时查看栈顶是否跟当前字符相同,相同栈顶字符弹出,开始循环下一个,若不相等则压入栈中
最后结果是 90% 的通过率
第二道题
第二道题是给两个字符串,targe,和 source,查找 targe 是否由 source 删除某些字符得到的,是返回开始的最大下标,否返回 -1
例子:
输入:
abc
abcaybec
结果为 3
解释:abc 可以由下面 abcaybec 删除 aybec 和 abcye 而来,删除 abcye 是最后的这个组成的 a 在下标位置 3 下,因此返回 3
解法
我的解法就是类似穷举了
以上面举例,首先找到每个 a 在 abcaybec 起点的位置的,然后遍历起点位置找,遍历到终点,若有符合顺序的记录下来并,最后取记录了位置的最大的起点位置
最后结果是 80% 的通过率
第三道题
第三题是今典题目,就在二维数组中取连线最大的,(好像是 leetcode 的青蛙跳?),可以前后左右对角线的连接取最大值
输入
4 4
1 0 0 0 1
1 0 0 1 1
1 1 1 0 1
1 1 1 1 0
结果 4
解释对角线 4 个 0
解法:
用了动态规划但我的条件边界没有处理好,最后时间到了,最后这题的通过率才 50%
以上就是本次的机试经验
#Java求职##华为##笔经#