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

wordpress搭建学校网站麻城网站制作公司

wordpress搭建学校网站,麻城网站制作公司,效果图怎么做出来的,桂林北站有核酸检测点吗一、题目描述 给定一个由唯一字符串构成的 0 索引 数组 words 。 回文对 是一对整数 (i, j) #xff0c;满足以下条件#xff1a; 0 i, j words.length#xff0c;i ! j #xff0c;并且words[i] words[j]#xff08;两个字符串的连接#xff09;是一个回文…一、题目描述 给定一个由唯一字符串构成的 0 索引 数组 words 。 回文对 是一对整数 (i, j) 满足以下条件 0 i, j words.lengthi ! j 并且words[i] words[j]两个字符串的连接是一个回文串。 返回一个数组它包含 words 中所有满足 回文对 条件的字符串。 你必须设计一个时间复杂度为 O(sum of words[i].length) 的算法。 示例 1 输入words [abcd,dcba,lls,s,sssll] 输出[[0,1],[1,0],[3,2],[2,4]] 解释可拼接成的回文串为 [dcbaabcd,abcddcba,slls,llssssll]示例 2 输入words [bat,tab,cat] 输出[[0,1],[1,0]] 解释可拼接成的回文串为 [battab,tabbat] 示例 3 输入words [a,] 输出[[0,1],[1,0]]提示 1 words.length 50000 words[i].length 300words[i] 由小写英文字母组成 二、解题思路 1. 创建一个HashMap用于存储每个单词及其索引。 2. 遍历words数组对于每个单词word进行以下操作  a. 将word反转得到反转后的字符串rev。 b. 检查rev是否在HashMap中如果在并且rev的索引不等于当前单词的索引则将当前单词的索引和rev的索引作为一个回文对添加到结果列表中但需要注意确保word本身不是回文。 c. 对于每个单词word将其拆分为前缀和后缀分别检查前缀和后缀是否为回文。如果是则在HashMap中查找相应的后缀和前缀并添加到结果列表中但需要注意确保后缀或前缀不为空字符串除非另一个单词为空字符串。 3. 返回结果列表。 三、具体代码 import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List;class Solution {public ListListInteger palindromePairs(String[] words) {ListListInteger res new ArrayList();HashMapString, Integer map new HashMap();for (int i 0; i words.length; i) {map.put(words[i], i);}for (int i 0; i words.length; i) {String word words[i];int len word.length();for (int j 0; j len; j) {// 分割成前后缀String prefix word.substring(0, j);String suffix word.substring(j);// 如果前缀是回文则查找反转后的后缀if (isPalindrome(prefix)) {String revSuffix new StringBuilder(suffix).reverse().toString();if (map.containsKey(revSuffix) map.get(revSuffix) ! i (suffix.length() 0 || j ! 0)) {res.add(Arrays.asList(map.get(revSuffix), i));}}// 如果后缀是回文则查找反转后的前缀if (isPalindrome(suffix)) {String revPrefix new StringBuilder(prefix).reverse().toString();if (map.containsKey(revPrefix) map.get(revPrefix) ! i) {res.add(Arrays.asList(i, map.get(revPrefix)));}}}}return res;}// 判断字符串是否为回文private boolean isPalindrome(String s) {int left 0, right s.length() - 1;while (left right) {if (s.charAt(left) ! s.charAt(right--)) {return false;}}return true;} }四、时间复杂度和空间复杂度 1. 时间复杂度 创建HashMap存储单词及其索引O(n * k)其中n是单词数组的长度k是单词的平均长度。这是因为每个单词都需要被插入到HashMap中。 遍历单词数组对于每个单词word我们再次遍历其所有可能的前缀和后缀O(n * k^2)。这是因为对于每个单词我们执行了k次操作每次操作是分割单词并检查前缀或后缀是否为回文每次操作需要O(k)时间字符串分割和回文检查。 在每次检查中我们可能执行了字符串反转和HashMap查找操作O(k)。 因此总的时间复杂度是O(n * k^2)因为这是最大的部分它支配了总运行时间。 2. 空间复杂度 HashMap存储单词及其索引O(n * k)其中n是单词数组的长度k是单词的平均长度。 结果列表res在最坏情况下如果每个单词都能与数组中的其他单词形成回文对则结果列表的大小将是O(n^2)。 辅助空间如字符串反转和临时字符串变量O(k)。 因此总的空间复杂度是O(n * k n^2)其中n * k是HashMap的空间n^2是结果列表的空间。在大多数情况下n^2可能是最大的部分因此空间复杂度可以简化为O(n^2)。但是如果单词长度远大于单词数量那么HashMap的空间可能会成为主导因素此时空间复杂度将是O(n * k)。 五、总结知识点 数据结构 ArrayList用于存储结果列表它是一个可调整大小的数组实现提供了比标准数组更多的灵活性。HashMap用于存储单词及其索引的映射它提供了快速的查找功能。 字符串操作 substring用于获取字符串的子串。StringBuilder用于构建字符串特别是进行字符串反转操作。 循环和条件语句 for循环用于遍历数组或进行重复操作。if语句用于条件判断。 算法逻辑 回文检测通过比较字符串的前后字符来检查一个字符串是否是回文。字符串分割将字符串分割成前缀和后缀用于检查不同组合是否可以形成回文对。 函数定义和调用 private boolean isPalindrome(String s)定义了一个私有辅助函数用于检查字符串是否为回文。Arrays.asList(...)用于创建并返回一个固定大小的列表。 错误处理和边界条件 检查前缀或后缀是否为空字符串以及是否与原字符串索引相同以避免无效的回文对。 以上就是解决这个问题的详细步骤希望能够为各位提供启发和帮助。
http://www.tj-hxxt.cn/news/223392.html

相关文章:

  • 手机网站设计字体多大郴州网红景点排名
  • 北京 工业网站建设公司价格wordpress页面教程
  • 深圳宝安做网站比较多人用什么网站做推广
  • 娄底市城乡建设局网站应用商城app开发
  • 云南省人防工程建设网站网站群建设技术规范
  • 建设项目竣工验收网站做网站项目前期工作包括哪些
  • 建设内容管理网站的目的餐饮网站开发性能需求
  • 九天智能建站软件辽宁省城乡住房建设厅网站
  • 中国建设银行驻莫斯科网站网站设计风格有哪几种
  • 建站之星建出来的网站如何上传网站首页轮播怎么做
  • 做网站投注员挣钱吗合肥seo推广外包
  • 网站建设前期要多久软件之家
  • 河北建设信息网站wordpress橫排友情链接
  • 用vue-cli做的网站做网站的一些费用
  • 网站在哪里实名认证大兴安岭做网站
  • 高端互联网网站canva在线平面设计官网
  • 如何做教育网站微信html5模板网站
  • 网站建设方案策划网站后台支持的字体
  • 网站开发职业前景竞价单页系统
  • qq刷赞网站咋做电脑培训班零基础网课
  • 桂林医院网站建设咨询公司管理制度
  • 用dw制作影视网站怎样做泰州seo公司
  • 网站建设的技术风险从网上下载的网站源码怎么用
  • 信阳市网站建设app网站建设工作师
  • 仿xss网站搭建湖北省疾病预防控制中心官方网站
  • vps搭建vpn无法访问国内网站项目网站有哪些
  • wordpress建站难不难吉祥又成功的公司名字
  • 织梦校园招生网站源码我做的网站打开慢怎么处理
  • 斗门区住房和城乡建设网站php做网站子页模板
  • 小城市网站建设业务电子商务网站开发模块流程图