wordpress主题音乐网站seo哪里做的好

diannao/2026/1/21 7:14:12/文章来源:
wordpress主题音乐,网站seo哪里做的好,怎么建设幸运28网站,wordpress离线文章发布第一个只出现一次的字符 题目#xff1a;在字符串中找出第一个只出现一次的字符#xff0c;比如输入“wersdfxvsdfwer”#xff0c;则输出x。 方法一#xff1a; 还是老规矩#xff0c;初始想法是从头遍历每一个字符#xff0c;每遍历一个字符都与后面n-1个字符比较如果…第一个只出现一次的字符 题目在字符串中找出第一个只出现一次的字符比如输入“wersdfxvsdfwer”则输出x。 方法一 还是老规矩初始想法是从头遍历每一个字符每遍历一个字符都与后面n-1个字符比较如果发现后面字符中包含相同字符则查询下一个字符如果后面字符都没有相同的字符则放回当前字符方法的时间复杂度是O(n2) 方法一是最简单的方式时间复杂度最大。接下来开始优化改这个算法 方法二 与次数相关我们可以将每个字符与出现的次数存储起来需求开辟额外的存储空间显然keyvalue形式的存储第一个想到的是java中的Map结构通过Map,我们可以通过字符串key来找到他对应的次数value有如下实现 /*** 找出数组中第一个只出现一次的字符 HashMap* author liaojiamin* Date:Created in 10:22 2021/6/10*/ public class FindNotRepeatChar {public static void main(String[] args) {System.out.println(findNotRepeatCharHashMap(wersdfxvsdfwer)); }/*** HashMap情况* */public static char findNotRepeatCharHashMap(String str){if(str null){return \u0000;}if(str.length() 1){return str.charAt(0);}MapCharacter, Integer map new HashMap();char[] target str.toCharArray();for (int i 0; i target.length; i) {Character key target[i];if(map.containsKey(key)){map.put(key, map.get(key) 1);}else {map.put(key, 1);}}for (int i 0; i target.length; i) {if(map.get(target[i]) 1){return target[i];}}return \u0000;}} 如上算法的实现是没问题的得到的第一个是x但是此时我们是借助了java的HashMap的api来实现我们的算法 如果只能用基础数据结构以及自己实现的方法呢如此变态的要求我们接着来优化。 方法三 在方法二的基础上我们其实只需要解决HashMap存在的顺序问题能否自定义一个哈希表因为题目的特殊性我们需要将先出现的字符放在某个数据结构的前面那么自定义一个哈希表直接通过hashCode来指定对应的位置因为字符char在C中是1个字节8位 28 256,在java中是2个字节16位65535那么我们创建一个长度为65535的数组每个字母根据其ASCII码作为数组下标对应的一个数字二数组中存储的是每个字符出现的次数这样我们创建了一个大小为65535以字符ASCII码作为键值的哈希表还有一个小的关键点在于字符的ASCII编码可以直接通过Integer.valueOf得到恰好Character的HashCode方法也是直接转int他是是相等的如上代码有如下实现 /*** 找出数组中第一个只出现一次的字符* author liaojiamin* Date:Created in 10:22 2021/6/10*/ public class FindNotRepeatChar {public static void main(String[] args) {System.out.println(findNotRepeatChar(wersdfxvsdfwer));}/*** 自定义Hash表方法* */public static char findNotRepeatChar(String str){if(str null){return \u0000;}if(str.length() 1){return str.charAt(0);}int[] charValue new int[256];char[] target str.toCharArray();for (int i 0; i target.length; i) {Integer position new Character(target[i]).hashCode();charValue[position] 1;}for (int i 0; i target.length; i) {Integer position new Character(target[i]).hashCode();if(charValue[position] 1){return target[i];}}return \u0000;} } 以上代码能正确得到我们需要的结果并且第一次遍历在哈希表中更新一个字符出现的次数时间是O(1)。如果字符串长度为n那么一次扫描时间复杂度是O(n) 第二次遍历得到的Hash表同样可以O(1)时间复杂度得到一个字符的次数所以时间复杂度依然是O(1) 这样总的来说时间复杂度还是O(1) 同时我们需要一个 65535 的整数数组由于数组的大小是个常数也就是数组大小不会和目标字符串的长度相关那么空间复杂度是O(1) 问题 在方法三种的确可以在纯英文字符的情况下得到确定值算法也是正确的但是实际上工作中字符远比65535个多而且hashCode也会有冲突的时候比如***存在中英文混合情况方法二就无法求解*** 方法四 基于方法二的基础上我们解决中英文混用造成的冲突以及顺序问题我想到了HashMap中用到的哈希冲突解决方法分离链表发我们定义一个链表数组每次冲突后将冲突元素添加到链表尾部然后依次遍历找出为 1 的节点即可如下实现 /*** 找出数组中第一个只出现一次的字符* author liaojiamin* Date:Created in 10:22 2021/6/10*/ public class FindNotRepeatChar {public static void main(String[] args) {System.out.println(findNotRepeatCharCompatibleChina(wersdfxxv我sdfwer));} /*** 异常情况无法保证中文英文数据在数组中顺序* 包含中文情况* */public static char findNotRepeatCharCompatibleChina(String str){if(str null){return \u0000;}if(str.length() 1){return str.charAt(0);}ListNode listArray[] new ListNode[str.length()];char[] target str.toCharArray();for (int i 0; i target.length; i) {Integer position (new Character(target[i]).hashCode())%str.length();if(listArray[position] null){listArray[position] new ListNode(String.valueOf(target[i]), 1);}else {ListNode listNode MyLinkedList.search(listArray[position], String.valueOf(target[i]));if(listNode ! null){listNode.setValue(listNode.getValue()1);}else {MyLinkedList.addToTail(listArray[position], String.valueOf(target[i]), 1);}}}for (int i 0; i listArray.length; i) {if(listArray[i] ! null){ListNode header listArray[i];while (header ! null){if(header.getValue() 1){return header.getKey().charAt(0);}header header.getNext();}}}return \u0000;}}如上算法参照HashMap的思想对hash表进行处理算法能得到正确的值。 我们试图通过一个 字符串大小的链表数组来存储对应存量数据其中涉及到HashCode%str.length取模得到对应位置 虽然获取数组位置的时候回有冲突并且不能保证顺序但是我们每次都通过原始数组去查找遍历依然可以得到第一个出现一次的字符 方法中用的链表ListNode以及链表对应的方法 MyLinkedList 都是自定义的方法可以在之前的文章数据结构与算法–链表实现以及应用 找到详细的实现以及说明。 方法的时间时间复杂度两次遍历都是O(n) 在每次遍历有hash冲突的节点时候我们需要调用 MyLinkedList.search 找到当前key值对应的节点此处复杂度取决于hash冲突的多少 因此时间复杂度应该大于O(n) 空间复杂度额外存储于字符串长度正相关也是O(n) 方法五 在方法四中算法是正确但是有一定的复杂度涉及到hash冲突解决取模定位链表节点查询这种复杂的操作因为我们收到方法三的定式思维影响用的hash表的结构存储其实完全不用我们可以用链表存储不用hash作为key直接用对应的字符作为key这样可以用少于O(n)的空间来存储如上分析有如下实现 /*** 找出数组中第一个只出现一次的字符* author liaojiamin* Date:Created in 10:22 2021/6/10*/ public class FindNotRepeatChar {public static void main(String[] args) {System.out.println(findNotRepeatCharCompatibleChinaLinkList(哈哈wersvdfxx我v我sdfwer去));}/*** 用链表解决* */public static char findNotRepeatCharCompatibleChinaLinkList(String str) {if (str null) {return \u0000;}if (str.length() 1) {return str.charAt(0);}//初始化链表ListNode listNode new ListNode(String.valueOf(str.charAt(0)), 1);char[] target str.toCharArray();for (int i 1; i target.length; i) {ListNode header MyLinkedList.search(listNode, String.valueOf(target[i]));if(header ! null){header.setValue(header.getValue() 1);}else {MyLinkedList.addToTail(listNode, String.valueOf(target[i]), 1);}}for (int i 0; i target.length; i) {ListNode targetNode MyLinkedList.search(listNode, String.valueOf(target[i]));if(targetNode ! null targetNode.getValue() 1){return target[i];}}return \u0000;} }如上用链表存储的实现方式时间复杂度与之前一样也是大于O(n)但是在代码复杂度上减少很多此方法不涉及到hash冲突解决等问题都是直接存储空间复杂度是小于O(n)的 上一篇数据结构与算法–丑数 下一篇数据结构与算法–数组中的逆序对

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

温州做网站最好的丹阳网站建设多少钱

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 输入一行字…

南昌市建设工程质量监督站网站开发一个平台

国产数据库在技术架构上主要分为集中式、基于中间件分布式和原生分布式架构,衍生出集中式架构和分布式架构。那么在这些部署架构中,从数据分布的视角来看,在数据库中数据分布的形态是怎样的。本文将简要分析OceanBase、PolarDB、OpenGauss、G…

大连培训网站建设开发公司管理制度

1、前言 Gradle插件开发在Android进阶知识中是占有一定比例的,特别是在性能优化领域,基本都会涉及,而且跟我们日常的编译打包也息息相关,加上有不少招聘要求里也明确要有Gradle插件开发经验,所以即使大部分人的日常开…

网站运营做内容做网页要多少钱

本文为非全局websocket,只在单页面创建连接。适用于在线聊天对话等业务。若有需要全局websocket(一打开app/小程序就自动连接,关闭则断开),请参考:微信小程序全局websocket。或将本文的实现移至App.vue中即可本文示例较为简易,若生产业务线上使用,需额外优化稳定性即异…

做qq空间的网站安装字体怎么在wordpress

一、set/multiset容器 1. set基本概念 简介:所有元素都会在插入时自动被排序 本质:set/multiset属于关联式容器,底层结构是用二叉树实现的 set和multiset的区别:set不允许容器中有重复的元素,multiset允许容器中有…

自己做的网站怎么放到网上去网站建设使用情况

下载安装克魔助手 摘要 本文介绍了如何下载安装克魔助手工具,以及注册和登录流程。通过简单的步骤,用户可以轻松获取并使用该工具,为后续的手机应用管理操作做好准备。 引言 克魔助手是一款免费的手机管理工具,通过该工具用户…

网站备案号 信息女生网站开发

1. 静态Web服务器是什么? 可以为发出请求的浏览器提供静态文档的程序。 平时我们浏览百度新闻数据的时候,每天的新闻数据都会发生变化,那访问的这个页面就是动态的,而我们开发的是静态的,页面的数据不会发生变化。 …

怎么用自己的网站做邮箱广东建筑人才网招聘信息网

目录 1.对真实值类别编码:2.预测值:3.目标函数要求:4.使用Softmax模型将输出置信度Oi计算转换为输出匹配概率y^i:5.使用交叉熵作为损失函数:6.代码实现: 1.对真实值类别编码: y为真实值&#xf…

自学做网站多长时间如何做网站的逻辑结构图

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 3妹:好冷啊, 冻得瑟瑟发抖啦 2…

自己怎么做机构网站网站项目怎么做计划

随着科技的进步,电脑已经深入到我们的日常生活和工作中。而在这个数字时代,录制屏幕内容变得日益重要。无论是制作教程、分享游戏技巧,还是记录重要的演示,录屏都是一个不可或缺的功能。可是电脑怎么录屏呢?本文将深入…

做网站标题图片大小互联网域名是什么意思

Thinkpad笔记本重装系统时无法UEFI启动进入PE怎么办?近日,有用户想要在Thinkpad笔记本中重装操作系统,但是发现无法UEFI启动并进入PE系统。如果想要通过PE进行Thinkpad笔记本系统重装操作的话,那么应该如何解决上述的问题呢?下面&#xff0…

网站导航栏的设计与实现天涯论坛发帖推广

JavaScript的事件循环是一种执行模型,它允许JavaScript引擎执行异步任务,尽管JavaScript是单线程的。这个模型确保了即使在执行长时间运行的操作(如从服务器获取数据)时,JavaScript代码也能保持响应性。事件循环和回调…

建网站的公司广州自适应企业架构

1.将Exchange Server 2010服务器加入域。 2.在“开始”菜单上,依次导航到“所有程序”>“附件”>“Windows PowerShell”。打开提升的 Windows PowerShell 控制台并运行以下命令: Import-Module ServerManager 3.使用 Add-WindowsFeature cmdlet 安…

长治网站制作浏览器推广怎么做

不知从何开始Redis的内存淘汰策略也开始被人问及,卷!真的是太卷了。难不成要我们去阅读Redis源码吗,其实问题的答案,在Redis中的配置文件中全有,不需要你阅读源码、这个东西就是个老八股,估计问这个东西是想…

网站右键禁止网络工程师自学难吗

更新对象的部分输入参数 代码 def update_state(self, **kwargs):# 更新指定的状态参数,保持其他参数不变for key, value in kwargs.items():if hasattr(self, key):setattr(self, key, value)怎么理解解释 用于更新对象的状态参数。这个方法使用了关键字参数&am…

网站生成静态慢原因建设银行档案管理网站

1. 什么是幂等性? 幂等性是指在分布式系统中,一个操作多次执行的结果与其执行一次的结果相同。设计具有幂等性的分布式系统可以有效避免数据不一致和重复处理的问题。 幂等系统的应用场景 在微服务架构下,由于分布式天然特性的时序问题, 以…

中小企业为什么要建网站oppo软件商店安装

前言 在上一篇文章中,我解释了如何以及为什么在Java代码中使用enums而不是switch/case控制结构。 在这里,我将展示如何扩展现有enums功能。 介绍 Java enum是一种编译器魔术。 在字节码中,任何enum都表示为扩展抽象类java.lang.Enum并具有几…

工信部网站备案流程网站管理强化阵地建设

基础面试题 什么是AOF AOF(Append-Only File)用于将Redis服务器收到的写操作追加到日志文件,通过该机制可以保证服务器重启后依然可以依靠日志文件恢复数据。 它的工作过程大抵分为以下几步: 收到客户端的写入命令(例如SET、DE…

建设网站需要的资金清单咨询公司的成本费用有哪些

一、前言 最近将推流程序完善了很多功能,尤其是增加了对多种流媒体服务程序的支持,目前支持mediamtx、LiveQing、EasyDarwin、nginx-rtmp、ZLMediaKit、srs、ABLMediaServer等,其中经过大量的对比测试,个人比较建议使用mediamtx和…

响应式网站怎么样深圳市手机网站建设企业

覆盖索引:查询使用了索引,并且需要返回的列,在索引里面都可以找到,减少select*的使用 1、using index condition Extra 为using index condition 表明查找使用了索引,但是需要回表查询(也就是先二级索引&…