华为非AI方向笔试真题 7月1号【字符串压缩与模式验证】
字符串压缩与模式验证(C/Py/Java/Js/Go)题解华为笔试真题 7月1号 非AI方向第一题 100分题型题目内容给定一个字符串sss请你判断它是否由一个较短的字符串重复多次构成。如果可以输出最短的重复段字符串重复次数否则输出字符串本身。例如“abababababab” 可以由 “ababab” 重复222次得到输出ab2ab2ab2。“abcabcabcabcabcabcabcabcabc” 可以由 “abcabcabc” 重复333次得到输出abc3abc3abc3。“aaaaaaaaaaaa” 可以由 “aaa” 重复444次得到也可以由 “aaaaaa” 重复222次得到按照最短的字符串输出输出a4a4a4。“ababaababaababa” 无法由某个子串重复多次构成输出ababaababaababa。输入描述一个字符串sss仅包含数字000-999、小写字母aaa-zzz、大写字母AAA-ZZZ字符串长度1≤n≤1061 \le n \le 10^61≤n≤106。输出描述一段字符串s_news\_news_news_news\_news_new重复次数字符串长度1≤n≤1061 \le n \le 10^61≤n≤106。样例1输入aaabbb输出aaabbb说明它无法被分割成至少两个完全相同的部分。题解和思路思路实现思路kmp如果s是循环拼接说明整个字符串最长相同前缀后缀肯定是存在大于0(这就代表next[n-1]一定要 大于 0)。先说结论如果k next[n-1], (n % (n - k) 0)则说明 s[: n- k]就是循环子串。可以简单推导一下假设直接用x表示最小循环子串那么字符串一定为循环子串重复而来类似与xxxxx假设k个x这时候来分析末尾最长公共前缀后缀长度肯定为(k-1) * x。 对应上面方程(n k * x.size()) 计算出来的最小循环数组就为x,也肯定可以整除的。代码总体时间复杂为OnC#includeiostream#includevector#includestring#includeutility#includesstream#includealgorithmusingnamespacestd;// kmp 算法求next数组vectorintgetNext(string s){intns.size();vectorintnext(n,0);for(inti1;in;i){intjnext[i-1];while(j0s[i]!s[j]){jnext[j-1];}if(s[i]s[j]){j1;}next[i]j;}returnnext;}intmain(){string s;cins;intns.size();vectorintnextgetNext(s);intprefixLennext[n-1];// 是由部分子串重复循环拼接组成if(prefixLen0(n%(n-prefixLen)0)){string anss.substr(0,n-prefixLen);intrepeaten/(n-prefixLen);coutansrepeate;}else{couts;}return0;}Javaimportjava.util.*;publicclassMain{// kmp 算法求next数组publicstaticint[]getNext(Strings){intns.length();int[]nextnewint[n];for(inti1;in;i){intjnext[i-1];while(j0s.charAt(i)!s.charAt(j)){jnext[j-1];}if(s.charAt(i)s.charAt(j)){j;}next[i]j;}returnnext;}publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);Stringssc.next();intns.length();int[]nextgetNext(s);intprefixLennext[n-1];// 是由部分子串重复循环拼接组成if(prefixLen0(n%(n-prefixLen)0)){Stringanss.substring(0,n-prefixLen);intrepeatn/(n-prefixLen);System.out.print(ansrepeat);}else{System.out.print(s);}}}python# kmp 算法求next数组defgetNext(s):nlen(s)nxt[0]*nforiinrange(1,n):jnxt[i-1]whilej0ands[i]!s[j]:jnxt[j-1]ifs[i]s[j]:j1nxt[i]jreturnnxtdefmain():sinput()nlen(s)nxtgetNext(s)prefixLennxt[n-1]# 是由部分子串重复循环拼接组成ifprefixLen0and(n%(n-prefixLen)0):anss[:n-prefixLen]repeatn//(n-prefixLen)print(f{ans}{repeat},end)else:print(s,end)if__name____main__:main()Javascriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});letinput[];rl.on(line,(line){input.push(line);});rl.on(close,(){constsinput[0];// kmp 算法求next数组functiongetNext(s){constns.length;constnextnewArray(n).fill(0);for(leti1;in;i){letjnext[i-1];while(j0s[i]!s[j]){jnext[j-1];}if(s[i]s[j]){j;}next[i]j;}returnnext;}constns.length;constnextgetNext(s);constprefixLennext[n-1];// 是由部分子串重复循环拼接组成if(prefixLen0(n%(n-prefixLen)0)){constanss.substring(0,n-prefixLen);constrepeatn/(n-prefixLen);process.stdout.write(ansrepeat);}else{process.stdout.write(s);}});Gopackagemainimport(bufiofmtos)// kmp 算法求next数组funcgetNext(sstring)[]int{n:len(s)next:make([]int,n)fori:1;in;i{j:next[i-1]forj0s[i]!s[j]{jnext[j-1]}ifs[i]s[j]{j}next[i]j}returnnext}funcmain(){in:bufio.NewReader(os.Stdin)varsstringfmt.Fscan(in,s)n:len(s)next:getNext(s)prefixLen:next[n-1]// 是由部分子串重复循环拼接组成ifprefixLen0(n%(n-prefixLen)0){ans:s[:n-prefixLen]repeat:n/(n-prefixLen)fmt.Print(ans,repeat)}else{fmt.Print(s)}}

相关新闻

大模型推理工具vLLM、llama.cpp与Ollama性能对比评测

大模型推理工具vLLM、llama.cpp与Ollama性能对比评测

1. 项目概述:大模型推理工具的性能对决当我们在本地或云端部署大语言模型时,经常会遇到一个令人头疼的问题:显卡利用率低下。明明配备了高端GPU,但实际运行时的显存占用和计算负载却常常低于预期。这种现象在大模型推理场景中尤为…

2026/7/21 20:34:12 阅读更多 →
SpringBoot集成大模型API构建医疗影像辅助诊断系统实战

SpringBoot集成大模型API构建医疗影像辅助诊断系统实战

如果你是一名计算机专业的学生,正在为毕业设计选题而焦虑,既想做一个有技术深度、能体现个人能力的项目,又担心技术栈太复杂、时间不够用,那么这篇文章就是为你准备的。 “SpringBoot 大模型的医疗影像辅助诊断系统”&#xff0…

2026/7/21 20:34:12 阅读更多 →
维持源码检出状态:构建可重现性与版本溯源的工程基石

维持源码检出状态:构建可重现性与版本溯源的工程基石

1. 项目概述:为什么“维持源码检出状态”是工程落地的隐形地基在日常协作开发、CI/CD流水线维护、甚至个人项目长期演进中,你是否遇到过这样的场景:上周还能顺利编译的代码,今天git pull后突然报错找不到某个头文件;Je…

2026/7/21 20:33:12 阅读更多 →

最新新闻

Efficient Reinforcement Learning for Large Language Models with Intrinsic Exploration

Efficient Reinforcement Learning for Large Language Models with Intrinsic Exploration

文章核心总结与翻译 一、主要内容 该研究聚焦于解决带可验证奖励的强化学习(RLVR)在大语言模型(LLM)训练中存在的计算开销大、数据效率低的问题——由于大量滚动路径(rollout)对优化贡献有限,导致训练成本高昂。研究提出了一种名为PREPO(Perplexity-Schedule with Re…

2026/7/21 23:23:01 阅读更多 →
Feedback-driven Retrieval-augmented Audio Generation with Large Audio Language Models

Feedback-driven Retrieval-augmented Audio Generation with Large Audio Language Models

一、文章主要内容总结 该研究针对文本到音频(TTA)生成中特定声音事件合成缺失或不完美的问题,提出了一种基于大型音频语言模型(LALM)的反馈驱动检索增强生成(RAG)方法。核心思路是利用LALM评估预训练TTA模型的生成输出,识别缺失或质量不佳的声音事件,从外部数据库检索…

2026/7/21 23:23:01 阅读更多 →
Mac微信美化终极指南:5种主题模式打造个性化聊天界面

Mac微信美化终极指南:5种主题模式打造个性化聊天界面

Mac微信美化终极指南:5种主题模式打造个性化聊天界面 厌倦了千篇一律的Mac微信默认界面?想要打造独特个性的聊天环境却不知从何入手?本指南将详细介绍通过WeChatExtension-ForMac这款神器,实现微信主题全面自定义,从基…

2026/7/21 23:23:01 阅读更多 →
电商返利平台全链路监控体系搭建:基于Prometheus的核心指标告警设计

电商返利平台全链路监控体系搭建:基于Prometheus的核心指标告警设计

电商返利平台全链路监控体系搭建:基于Prometheus的核心指标告警设计 大家好,我是省赚客APP研发者微赚淘客! 在复杂的电商返利业务中,从用户下单、平台回调、佣金计算到最终结算,整个链路涉及多个微服务与第三方API的交…

2026/7/21 23:23:01 阅读更多 →
5种主题模式打造个性化微信:Mac微信美化终极指南

5种主题模式打造个性化微信:Mac微信美化终极指南

5种主题模式打造个性化微信:Mac微信美化终极指南 厌倦了千篇一律的Mac微信默认界面?想要打造独特个性的聊天环境却不知从何入手?WeChatExtension-ForMac这款强大的微信增强插件为你带来全新的界面美化体验!本指南将详细介绍如何通…

2026/7/21 23:23:01 阅读更多 →
SLA树脂手板精度与交期实测

SLA树脂手板精度与交期实测

做产品开发的朋友都清楚,一个手板样件的精度和交期,往往直接决定项目能否按期推进。测评方法所有样品统一采用SLA光固化工艺,材料为白色光敏树脂,后处理统一为手工打磨加哑光喷涂。通常,每组样品各提交3件,…

2026/7/21 23:22:01 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻