广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang 中怎么判断字符串是否在一个数组中
  • 695
分享到

Golang 中怎么判断字符串是否在一个数组中

2023-06-16 03:06:51 695人浏览 安东尼
摘要

golang 中怎么判断字符串是否在一个数组中,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在使用 python 的时候,如果要判断一个字符串是否在另一个包含字符串的列表中

golang 中怎么判断字符串是否在一个数组中,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在使用 python 的时候,如果要判断一个字符串是否在另一个包含字符串的列表中,可以使用in 关键词,例如:

name_list = ['pm', 'kingname', '青南'] if 'kingname' in name_list:     print('kingname 在列表里面')

但是,Golang 是没有in这个关键词的,所以如果要判断一个字符串数组中是否包含一个特定的字符串,就需要一个一个对比:

package main  import "fmt"   func in(target string, str_array []string) bool {      for _, element := range str_array{         if target == element{             return true         }     }     return false }  func main(){     name_list := []string{"pm", "kingname", "青南"}     target1 := "kingname"     target2 := "产品经理"     result := in(target1, name_list)     fmt.Println("kingname 是否在 name_list 中:", result)     result = in(target2, name_list)     fmt.Println("产品经理是否在 name_list 中:", result) }

运行效果如下图所示:

Golang 中怎么判断字符串是否在一个数组中

但这种方式有一个弊端,就是要遍历整个字符串数组。如果数组里面有100万条数据,那么平均要遍历50万次才能找到。这是一个非常费时间的操作。

有没有什么办法可以优化这个操作呢?

如果是有序的整型数组,那么我们可以使用二分查找,把时间复杂度O(n)降到对数时间复杂度。字符串能不能也这样操作呢?实际上是可以的。

在 Golang  中,有一个排序模块sort,它里面有一个sort.Strings()函数,可以对字符串数组进行排序。同时,还有一个sort.SearchStrings()[1]函数,会用二分法在一个有序字符串数组中寻找特定字符串的索引

结合两个函数,我们可以实现一个更高效的算法

package main  import (         "fmt"         "sort"     )   func in(target string, str_array []string) bool {     sort.Strings(str_array)     index := sort.SearchStrings(str_array, target)     if index < len(str_array) && str_array[index] == target {         return true     }     return false }  func main(){     name_list := []string{"pm", "kingname", "青南"}     target1 := "kingname"     target2 := "产品经理"     result := in(target1, name_list)     fmt.Println("kingname 是否在 name_list 中:", result)     result = in(target2, name_list)     fmt.Println("产品经理是否在 name_list 中:", result) }

运行效果如下图所示:

Golang 中怎么判断字符串是否在一个数组中

其中,sort.Strings是一个 in-place 的修改方式,是直接修改的  str_array。修改以后str_array变成有序的字符串数组。接下来通过二分查找快速定位。如果找到了,那么返回目标字符串在排序后的列表中第一次出现的索引。如果没有找到,那么返回数组中最后一个元素的索引。所以只要  index 小于最后一个元素的索引,那么目标字符串肯定存在;如果等于最后一个元素的索引,但是值不等于最后一个元素,那么目标字符串就不存在于字符串数组中。

通过先排序再查询的方式,对于100万个元素的字符串数组,只需要查询20次左右就能确认字符串是否存在。速度大大提升。

最后考大家一个思考题。name_list一开始是乱序的字符串数组,在上图第23行,如果打印一下  name_list,打印出来的是经过排序的,还是没有经过排序的字符串数字?

关于 Golang 中怎么判断字符串是否在一个数组中问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网GO频道了解更多相关知识。

您可能感兴趣的文档:

--结束END--

本文标题: Golang 中怎么判断字符串是否在一个数组中

本文链接: https://www.lsjlt.com/news/282187.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang 中怎么判断字符串是否在一个数组中
    Golang 中怎么判断字符串是否在一个数组中,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在使用 Python 的时候,如果要判断一个字符串是否在另一个包含字符串的列表中...
    99+
    2023-06-16
  • 怎么在shell中判断字符串是否存在数组中
    怎么在shell中判断字符串是否存在数组中?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。语法格式: [[ "${array[@]}" =~ ...
    99+
    2023-06-09
  • php判断某个字符串是否存在数组
    在PHP开发中,经常需要从一个字符串数组中查找特定字符串是否存在。这种操作很常见,毕竟在很多场景下,需要根据某个关键字进行筛选或者过滤。那么,如何判断某个字符串是否存在数组中呢?本文就为您介绍一些实用的方法。方法一:使用in_array函数...
    99+
    2023-05-22
  • Python中判断字符串是否包含另一个字符串
    Python中判断字符串是否包含另一个字符串 在Python编程中,经常需要判断一个字符串是否包含另一个字符串。这在处理文本数据或搜索操作时非常常见。Python提供了几种方法来实现这个功能,本文将介...
    99+
    2023-10-18
    python mysql 数据库 Python
  • es6怎么判断字符串中是否有某个字符串
    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。es6判断字符串是否包含子字符串的方法方法1:利用includes()函数ES6的字符串新增了includes方法,我们可以用它来判断是否包含子字符串。s...
    99+
    2023-05-14
    ES6 es6字符串
  • java判断某个字符串是否在字符串数组中的方法(4种)
    1.效率最高(最原始) 代码如下(示例): public class Demo {     public static boolean useLoop(String[] arr, String targetValue) {...
    99+
    2023-09-05
    java
  • 怎么在javascript中判断是否是字符串
    这期内容当中小编将会给大家带来有关怎么在javascript中判断是否是字符串,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。javascript判断是否是字符串的方法:首先使用typeof操作符返回未经计...
    99+
    2023-06-14
  • java中如何判断一个字符串是否是小数
    函数介绍:matches() 方法用于检测字符串是否匹配给定的正则表达式。语法:public boolean matches(String regex)返回值:在字符串匹配给定的正则表达式时,返回 true。StringUtils.isBl...
    99+
    2016-10-11
    java 判断 字符串 小数
  • iOS怎么判断字符串中是否含有某个字符串
    在iOS中,可以使用NSString的rangeOfString:方法来判断一个字符串中是否包含另外一个字符串。该方法返回一个NSR...
    99+
    2023-10-21
    iOS
  • java中如何判断字符串数组中是否存在某个值
    方法一:可以使用Arrays类中binarySearch(Object[] a, Object key)方法来查找是否存在某个值,如果某个值存在则返回值大于0,反之返回值则小于0。优点:使用二分查找法,效率快捷。缺点:查询的数组必须是有序的...
    99+
    2017-08-31
    java 字符串 数组 存在
  • 怎么在python中判断字符串是否为整数
    怎么在python中判断字符串是否为整数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。操作环境:windows7系统、python3.9版,DELL G3电脑。python...
    99+
    2023-06-14
  • java中判断字符串是否是数字
    java中判断字符串是否是数字的方法如下:1、用Java自带的方法Java中有一个Character.isDig(char ch) public class CheckStrIsNum { public stat...
    99+
    2017-05-08
    java 字符串
  • java怎么判断一个字符串是否为回文
    可以用以下几种方法来判断一个字符串是否为回文:1. 使用 StringBuilder 类的 reverse 方法将字符串反转,然后与...
    99+
    2023-10-18
    java
  • php如何判断一个数字是否在一个数组中
    本篇内容主要讲解“php如何判断一个数字是否在一个数组中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何判断一个数字是否在一个数组中”吧!方法:1、用“in_array(值,数组)”,若...
    99+
    2023-06-30
  • php怎么判断一个字符串是否是时间戳
    PHP是一种非常流行的服务器端编程语言,它广泛应用于各种Web应用程序中。日期和时间是Web应用程序中常见的元素,因此在PHP中,处理日期和时间是非常常见的事情。在PHP中,有时需要判断一个字符串是否是时间戳,因为时间戳在Web开发中是一个...
    99+
    2023-05-14
    php php时间戳
  • 怎么在JavaScript中判断字符串是否为空
    本篇文章给大家分享的是有关怎么在JavaScript中判断字符串是否为空,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。javascript是一种什么语言javascript是一...
    99+
    2023-06-14
  • oracle怎么判断字符串是否是数字
    Oracle可以使用以下方法判断一个字符串是否为数字:1. 使用REGEXP_LIKE函数和正则表达式来判断字符串是否只包含数字字符...
    99+
    2023-08-18
    oracle
  • es6如何判断字符串中是否有某个字符串
    这篇文章主要介绍了es6如何判断字符串中是否有某个字符串的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇es6如何判断字符串中是否有某个字符串文章都会有所收获,下面我们一起来看看吧。判断方法:1、利用includ...
    99+
    2023-07-05
  • golang怎么判断字符串是否以指定字符开头
    在golang中,可以使用strings包的HasPrefix()函数来判断字符串是否以指定字符或字符串开头,语法“Strings.HasPrefix(原字符串,要检索的子串)”;如果是以指定字符开头则返回True,如果不是则返回False...
    99+
    2023-05-14
    go语言 Golang
  • php判断多维数组是否存在字符串
    PHP是一门强大的编程语言,可以轻松地创建和操作多维数组。在处理多维数组时,我们常常需要判断数组中是否存在某个特定的字符串。本篇文章将会介绍如何使用PHP判断多维数组中是否存在指定的字符串。首先,我们需要了解什么是多维数组。多维数组是指一个...
    99+
    2023-05-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作