OPPO笔试真题 - 最长锚定片段(C++/Py/Java /Js/Go)

发布时间:2026/10/8 2:07:08
OPPO笔试真题 - 最长锚定片段(C++/Py/Java /Js/Go) 最长锚定片段OPPO技术岗 8月8号笔试 第一题题目内容在文字定位算法中小写字母ooo、大写字母OOO和数字000由于形态相近常被用作视觉锚点anchor。如果一个非空字符串的第一个字符和最后一个字符都属于锚点字符则称该字符串为“锚定片段”。现在给定一个长度为nnn的字符串sss你可以从sss中截取一个连续子串请求出其中最长的锚定片段的长度。如果找不到任何锚定片段则输出000。数据范围字符串长度nnn满足1≤n≤1200001 \le n \le 1200001≤n≤120000。字符串仅由大小写英文字母和数字组成。输入描述第一行包含一个整数nnn(1≤n≤1200001 \le n \le 1200001≤n≤120000)表示字符串sss的长度。 第二行包含一个长度为nnn的字符串sss仅由大小写英文字母和数字组成。输出描述输出一个整数表示最长锚定片段的长度。样例1输入5 oabcO输出5说明字符串为oabcO其中包含两个锚点字符开头的o和结尾的O。最左锚点位置为000最右锚点位置为444最长锚定片段的长度为4−0154 - 0 1 54−015即整个字符串本身。样例2输入3 a0b输出1说明字符串a0b中仅有一个锚点字符0位于位置111。最左和最右锚点均为该位置片段0本身满足首尾均为锚点的条件长度为1−1111 - 1 1 11−111。样例3输入4 abcd输出0说明字符串abcd中没有任何锚点字符o、O、0无法构成锚定片段因此输出000。样例4输入6 0oooOO输出6说明字符串0oooOO中的每一个字符都是锚点。最左锚点为开头的0位置000最右锚点为结尾的O位置555最长锚定片段覆盖整个字符串长度为5−0165 - 0 1 65−016。题解和思路思路实现思路模拟很容易就能分析出来最长锚定片段为第一个锚定字符到最后一个锚定字符的长度。定义first记录第一个锚定字符位置last记录最后一个锚定字符位置初始设置first last -1然后从前往后遍历输入字符串更新first和last对应位置。根据last和first值输出结果first -1时说明不存在锚定字符输出0first ! -1,输出对应长度last - first 1算法平均时间复杂度为OnC#includebits/stdc.husingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn;string s;cinn;cins;// 描点第一位和最后一位位置intfirst,last;firstlast-1;for(inti0;in;i){if(s[i]0||s[i]O||s[i]o){if(first-1){firsti;}lasti;}}// 不存在锚点字符if(first-1){cout0;}else{coutlast-first1;}return0;}Javaimportjava.io.*;importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);intnsc.nextInt();Stringssc.next();// 描点第一位和最后一位位置intfirst-1,last-1;for(inti0;in;i){if(s.charAt(i)0||s.charAt(i)O||s.charAt(i)o){if(first-1){firsti;}lasti;}}// 不存在锚点字符if(first-1){System.out.print(0);}else{System.out.print(last-first1);}}}pythonnint(input())sinput()# 描点第一位和最后一位位置firstlast-1foriinrange(n):ifs[i]0ors[i]Oors[i]o:iffirst-1:firsti lasti# 不存在锚点字符iffirst-1:print(0)else:print(last-first1)Javascriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});constinput[];rl.on(line,line{input.push(line.trim());});rl.on(close,(){constnNumber(input[0]);constsinput[1];// 描点第一位和最后一位位置letfirst-1;letlast-1;for(leti0;in;i){if(s[i]0||s[i]O||s[i]o){if(first-1){firsti;}lasti;}}// 不存在锚点字符if(first-1){console.log(0);}else{console.log(last-first1);}});Gopackagemainimport(bufiofmtos)funcmain(){in:bufio.NewReader(os.Stdin)varnintvarsstringfmt.Fscan(in,n)fmt.Fscan(in,s)// 描点第一位和最后一位位置first,last:-1,-1fori:0;in;i{ifs[i]0||s[i]O||s[i]o{iffirst-1{firsti}lasti}}// 不存在锚点字符iffirst-1{fmt.Println(0)}else{fmt.Println(last-first1)}}

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询