当前位置: 首页 > 面试题库 >

如何创建包含唯一字符串的数组?

袁泓
2023-03-14
问题内容

我想创建一个包含唯一字符串的数组。我怎样才能做到这一点?

var paths = make([]string, 0)

func main() {
    // Members are added dynamically
    paths = append(paths, "aaa")
    paths = append(paths, "bbb")
    paths = append(paths, "bbb")
    paths = append(paths, "ccc")

    // convert ["aaa", "bbb", "bbb", "ccc"] -> ["aaa", "bbb", "ccc"] 
    // or can I use some class that disallow the same string automaticaly?
}

问题答案:

如果要收集唯一元素,则为Set数据类型。Go没有集合数据类型,但是您可以使用map[string]bool来充当集合。

对于“好的”集合,请使用具有bool值类型(带有true值)的映射并利用零值。对于内存占用最小的集合,请使用具有struct{}值类型的映射,因为类型的值不struct{}占用内存;并使用逗号分隔的习惯用法来判断值是否在集合/映射中。

这是set的“不错”版本的样子。代替切片,将元素添加到a map[string]bool作为键,将a true作为值:

m := make(map[string]bool)

m["aaa"] = true
m["bbb"] = true
m["bbb"] = true
m["ccc"] = true

要检查集合(地图)中是否已存在某个元素,您可以简单地使用一个索引表达式:

exists := m["somevalue"]

这将利用零值,也就是说,如果映射尚未包含元素,则返回值类型的零值(false如果为booltype,则返回零),正确指示该元素不在集合中。

地图中的元素没有固定的顺序。如果您需要保留顺序(例如插入顺序),请使用一个切片(记住该顺序)和一个映射(告诉要添加的元素是否是新元素)。这是最简单的帮助add()函数:

var m = make(map[string]bool)
var a = []string{}

func main() {
    add("aaa")
    add("bbb")
    add("bbb")
    add("ccc")
}

func add(s string) {
    if m[s] {
        return // Already in the map
    }
    a = append(a, s)
    m[s] = true
}


 类似资料:
  • 问题内容: java中有没有一种方法可以用指定数量的指定字符创建字符串?就我而言,我需要创建一个包含10个空格的字符串。我当前的代码是: 有没有更好的方法来完成同一件事。特别是我想快速(在执行方面)。 问题答案: for循环将由编译器优化。在像您这样的情况下,您无需自己担心优化。信任编译器。 顺便说一句,如果有一种方法可以创建一个包含n个空格字符的字符串,那么它的编码方式就和您刚才一样。

  • 代码非常简单。它会检查所有字符一次,并替换第一次出现的字符。然而,输入=“aab”失败。我不知道为什么。编程语言是java。 编辑 我改了密码。现在它抛出了一个输入错误 错误: 线程“main”java中出现异常。util。正则表达式。PatternSyntaxException:索引1附近的未关闭组(^at java.util.regex.Pattern.error,Pattern.java:1

  • 本文向大家介绍在 JavaScript 中包含唯一字符的筛选字符串,包括了在 JavaScript 中包含唯一字符的筛选字符串的使用技巧和注意事项,需要的朋友参考一下 问题 我们需要编写一个 JavaScript 函数来接受一个字符串 str。我们的函数应该构造一个只包含输入字符串中唯一字符的新字符串,并删除出现的所有重复字符。 示例 以下是代码- 输出结果 以下是控制台输出-

  • 使用字符串数组为对象创建avro模式的正确方法是什么? 我试图创建avro模式的对象,有字符串数组根据官方文档?但我得到错误。 https://avro.apache.org/docs/1.8.1/spec.html [错误]无法执行目标组织。阿帕奇。avro:avro maven插件:1.8.2:项目电子邮件上的模式(默认值):目标组织的执行默认值。阿帕奇。avro:avro maven插件:1

  • 问题内容: 我如何提取字符串[]或arraylist中的所有元素,并以适当的格式(所有空格之间使用单个空格)组合所有单词并存储在数组中。 输出:Java很酷。 问题答案: 使用。 或使用Apache Commons Lang 。 或使用Java8的。

  • 问题内容: 我正在尝试查看字符串是否至少包含数字或小写或大写。 我写了这样的东西: 但是我不明白为什么我不能使组合达到36。它们一直保持为0。我在做什么错? 问题答案: 您可以改用Pattern,我认为“ matches”方法会查找整个字符串以匹配正则表达式。 试试下面的代码: