Golang中如何拼接字符串数组中相同字母 [已解决]

Golang中如何拼接字符串数组中相同字母 [已解决] 我目前正在研究如何将字符串数组中相同的字母值连接起来。在Java和C等其他语言中,我可以直接使用某些库/函数来实现。但在Go语言中,我完全不知道该如何操作。

例如:

isSame(“bbcomqdd”);

我希望输出结果是 [bb c o m q dd],而不是像下面这样 [bb dd]

需要一个简单的代码来查找相同字母并进行追加,然后放入字符串数组。

func main() {
    fmt.Println("hello world")
}
12 回复

除了这里,我还能通过什么方式联系你呢? 😊

更多关于Golang中如何拼接字符串数组中相同字母 [已解决]的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


没问题!!!
我仍在学习Go,😊

非常感谢您的热心帮助!我对此深表感激! 😊

有没有办法将 string(arr) 转换为字符串数组?[oo, p, d, w, m, e, oo]

从根本上说,是的。我需要将相同的值进行连接。

但为什么你的输出不是 oo p d w m e oo?

如果它已经是一个数组,那么就不需要了… 另一种方法是使用字符串包中的 StringBuilder 而不是 rune 切片…

只需将 fmt.Printf("%c",c) 移到 if 语句后面…是我的错 🙂

作为返回字符串结果的函数:

func main() {
    fmt.Println("hello world")
}

好的。谢谢。

如果你不介意我问一下,除了这里,我还能通过什么方式联系你呢?你看起来对 Golang 非常精通。如果能与你保持联系,我将不胜感激。

抱歉,我不太明白您的意思,而且这些随意的星号让复制和运行代码变得很困难。

因此,能否请您使用 Markdown 来格式化代码,或者提供一个指向 Go Playground 的链接,其中包含一些可执行的代码,以便我们了解您的问题所在?

// your code here

我想你的意思是这样:

package main

import (
	"fmt"
)

func main() {
  str := "oopdwmeoo"

  prv := []rune(str)[0]
  for _, c := range str {
    fmt.Printf("%c", c)

    if prv != c {
      fmt.Printf(" ")
      prv = c
    }  
  }
}

在Go语言中,可以通过遍历字符串并比较相邻字符来实现相同字母的拼接。以下是一个完整的解决方案:

package main

import "fmt"

func groupSameLetters(s string) []string {
    if len(s) == 0 {
        return []string{}
    }
    
    var result []string
    current := string(s[0])
    
    for i := 1; i < len(s); i++ {
        if s[i] == s[i-1] {
            current += string(s[i])
        } else {
            result = append(result, current)
            current = string(s[i])
        }
    }
    
    result = append(result, current)
    return result
}

func main() {
    input := "bbcomqdd"
    output := groupSameLetters(input)
    fmt.Println(output) // 输出: [bb c o m q dd]
}

代码说明:

  1. groupSameLetters 函数接收字符串参数并返回字符串切片
  2. 初始化 current 变量存储当前连续的相同字符
  3. 遍历字符串,比较当前字符与前一个字符
  4. 如果字符相同,追加到 current;如果不同,将 current 加入结果并重置
  5. 最后将剩余的 current 加入结果

测试其他示例:

func main() {
    fmt.Println(groupSameLetters("aabbcc"))    // [aa bb cc]
    fmt.Println(groupSameLetters("hello"))     // [h e ll o]
    fmt.Println(groupSameLetters("mississippi")) // [m i ss i ss i pp i]
}
回到顶部