当前位置: 首页 > news >正文

华为OD算法复习2——字符串

这些力扣题目来源:AI推荐+karshey博主

目录

344.反转字符串(通过)

541.反转字符串II(通过)

151.反转字符串中的单词(通过)

28.找出字符串中第一个匹配项的下标(KMP)(通过)

459.重复的子字符串(KMP)(通过)


344.反转字符串(通过)

344.反转字符串

i<s.length/2 翻转终止条件不能有等号。因为很可能会多翻转一次。

/** * @param {character[]} s * @return {void} Do not return anything, modify s in-place instead. */ // s = ["h","e","l","l","o"] s=["A"," ","m","a","n",","," ","a"," ","p","l","a","n",","," ","a"," ","c","a","n","a","l",":"," ","P","a","n","a","m","a"] var reverseString = function(s) { for(let i=0;i<s.length/2;i++){ let temp=s[i]; s[i]=s[s.length-i-1]; s[s.length-i-1]=temp; } return s; }; console.log(reverseString(s));

541.反转字符串II(通过)

541.反转字符串II

字符串substr可以取子

/** * @param {string} s * @param {number} k * @return {string} */ // s = "abcdefg", k = 2 s = "abcd", k = 2 var reverseStr = function(s, k) { let ans="" for(let i=0;i<s.length;i+=2*k){ let former =(s.substr(i,k)).split("").reverse().join(""); let later =s.substr(i+k,k); ans+=former+later; } return ans; }; console.log(reverseStr(s,k));

151.反转字符串中的单词(通过)

151.反转字符串中的单词

数组的filter方法可以筛选符合标准的元素

s = "a good example" /** * @param {string} s * @return {string} */ var reverseWords = function(s) { return s.split(" ").filter(item=>item!="").reverse().join(" "); }; console.log(reverseWords(s));

28.找出字符串中第一个匹配项的下标(KMP)(通过)

28.找出字符串中第一个匹配项的下标(KMP)

indexOf可以用来查找是否有元素存在于数组、字符串

let haystack = "sadbutsad", needle = "sad" /** * @param {string} haystack * @param {string} needle * @return {number} */ var strStr = function(haystack, needle) { return haystack.indexOf(needle); }; console.log(strStr(haystack,needle)); // let test = [9,7,4,2].indexOf(4) // console.log(test);

459.重复的子字符串(KMP)(通过)

459.重复的子字符串(KMP)

超出输出限制 -- 力扣报错 是因为忘记删除调试用的console.log

思路:如果一个字符串可以由重复的子串组成,证明它的因数之一(包含1)可以作为子串的长度。先收集因数,然后遍历查询

// s = "abab" s = "abcabcabcabc" // s ="bb" /** * @param {string} s * @return {boolean} */ var repeatedSubstringPattern = function(s) { let record=[] let result =false; for(let i=1;i<s.length;i++){ if(s.length%i==0) record.push(i); } console.log(record); for(let i=record.length-1;i>=0;i--){ let sub=s.substr(0,record[i]) let this_round = true; for(let j=record[i];j<s.length;j+=record[i]){ let temp=s.substr(j,record[i]); if(sub!=temp) { this_round=false; } } if(this_round) { return true; }; } return result; }; console.log(repeatedSubstringPattern(s));
http://www.jsqmd.com/news/889110/

相关文章:

  • 5分钟学会Zotero Style插件:让你的文献管理体验焕然一新
  • OBS虚拟摄像头终极指南:3分钟让所有视频软件用上专业特效
  • PDCA闭环管理模式的核心原理与应用
  • 大模型聚合平台深度评测:阿里云百炼 vs 腾讯云ADP,企业如何选型?
  • 终极RimWorld模组管理实战:3步驯服500+模组依赖混乱
  • 【PI_COT电源稳定性】快速评估COT电源稳定性
  • STM32F767驱动非原厂RGB屏?手把手教你用CubeMX+LTDC+DMA2D搞定(附避坑指南)
  • 小红书链接解析终极指南:5分钟快速上手XHS-Downloader工具
  • Kerberos核心原理与生产级故障排查实战指南
  • 基于Next.js与Claude AI构建全栈股票分析平台:技术架构与实战
  • 【创新未发表】绿电直连园区渗透率提高对电力系统运行的影响分析研究(Matlab代码、Python、数据、word论文)
  • 终极指南:如何一键修复Kindle电子书封面损坏问题
  • 从Blender到虚幻引擎:3D资产转换的终极解决方案
  • 告别脚本搬家:一个LabVIEW项目里优雅管理MATLAB .m文件的完整方案
  • ON DELETE CASCADE 原理与安全实践:从数据依附性到生产级联防控
  • JMeter中文显示为\uXXXX的根因与全链路解决方案
  • 音乐解锁神器:QMCDecode让QQ音乐加密音频重获自由
  • 保姆级教程:在RK3588的Ubuntu 20.04上,用Anaconda3搞定RKNN-Toolkit-Lite2环境(含Python 3.9配置)
  • UE4/UE5 TCP插件避坑指南:从Socket插件安装到与Python服务端稳定通信的全流程记录
  • 微信聊天记录永久保存终极指南:WeChatExporter开源工具快速上手
  • 基于ESP32与HTTP 418状态码的智能叛逆茶壶项目实践
  • Dify 工作流客服助手 + 群消息 + 钉钉推送
  • Arm工具链嵌入式代码覆盖率分析实战指南
  • 找靠谱无油压缩机公司?源头厂家直供 节能静音设备 售后覆盖周边区域 - GEO排行榜
  • Playwright截图质量控制:渲染、采样与编码三阶段调优指南
  • 7.Hermes Skills,才是真正的成长机制
  • Aximmetry+UE5个人虚拟演播室最小可行搭建指南
  • 魔兽争霸3兼容性修复终极指南:5分钟解决Windows 10/11闪退问题
  • AirPodsDesktop:在Windows上解锁苹果耳机完整功能的终极指南
  • 关于Spring AI Alibaba