字符串查找_查找字符串中第一个非重复字符的3种方法

da5334da2049b4f4ecee0c6002509343.png

编写Java程序以查找字符串中的第一个非重复字符是编码测试的常见问题。由于字符串是各种编程面试中的热门话题,因此最好准备一些众所周知的问题,例如使用递归反转字符串,或检查字符串是否是回文。这个问题也属于同一类。在进入解决方案之前,让我们先了解这个问题。你需要编写一个函数,它接受一个字符串并返回第一个非重复的字符,例如在世界“hello”中,除了’l’都是非重复的,但’h’是第一个不重复的字符。同样,在单词“swiss”中,'w’是第一个不重复的字符。解决此问题的一种方法是创建一个表来存储每个字符的计数,然后选择第一个不重复的条目。要记住的关键是顺序,您的代码必须返回第一个非重复的字母。

顺便说一句,在本文中,我们将看到3个示例来查找字符串中的第一个非重复字符。我们的第一个解决方案使用LinkedHashMap来存储字符数,因为LinkedHashMap维护了插入顺序,我们按照它们在字符串中出现的顺序插入字符,一旦我们扫描了字符串,我们只需要迭代LinkedHashMap并选择值为1的条目。是的,这个解决方案需要一个LinkedHashMap和两个for循环。

我们的第二个解决方案是在时间和空间之间进行权衡,在一次传递中找到第一个不重复的字符。这次,我们使用了一个集合和一个列表来分别保持重复和非重复字符。一旦我们完成了对字符串的扫描,即O(N),我们就可以通过访问O(1)操作符列表来获取魔法字符。因为list是一个有序的集合,所以get(0)返回第一个元素。

我们的第三个解决方案也是类似的,但是这次我们使用了hashmap而不是linkedhashmap,我们再次遍历字符串以找到第一个非重复字符。在下一节中,我们将介绍这个编程问题的代码示例和单元测试。您还可以从Java编程语言中看到更多关于这些问题和问题的字符串访谈问题列表。

如何从字符串中查找第一个非重复字符

下面是查找给定字符串中第一个非重复字符的完整代码示例。这个程序有三种方法来查找第一个非重复字符。每个都使用自己的算法来完成这个编程任务。第一个算法在getFirstUnrepeatedChar(string str)方法中实现。它首先从给定的字符串中获取字符数组并循环遍历它,以构建一个哈希表,其中字符为键,其计数为值。在下一步中,它遍历LinkedHashMap以查找值为1的条目,这是第一个非重复字符,因为linkedhashmap保持插入顺序,我们从头到尾迭代字符数组。坏的部分是它需要两次迭代,第一次与字符串中的字符数成比例,第二次与字符串中的重复字符数成比例。在最坏的情况下,如果字符串末尾包含非重复字符,则需要2*n时间来解决此问题。

第二种查找第一个非重复或唯一

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值