Skip to content

Instantly share code, notes, and snippets.

@zhangguanzhang
Last active May 17, 2020 11:38
Show Gist options
  • Save zhangguanzhang/791c484f6137f8deaed473a3857219ee to your computer and use it in GitHub Desktop.
Save zhangguanzhang/791c484f6137f8deaed473a3857219ee to your computer and use it in GitHub Desktop.
golang Remove the specified repeated string
package main
import (
"fmt"
)
func main() {
s := `aaabccaad`
u := "a"
fmt.Printf("%s %s ===> %s \n", s, u, uniq(s, u))
s = `hvafdaavhhaav`
fmt.Printf("%s %s ===> %s \n", s, u, uniq(s, u))
u = "h"
fmt.Printf("%s %s ===> %s \n", s, u, uniq(s, u))
}
func uniq(s string, uniq string) string {
var (
old uint8
count int
result string
)
for i := 0; i < len(s); i++ {
if string(s[i]) == uniq {
count++
if count == 1 && old != 0 {
result += string(old)
}
} else {
if count == 0 && old != 0 {
result += string(old)
}
if count > 0 {
result += string(old)
count = 0
}
}
old = s[i]
}
result += string(old)
return result
}
@zhangguanzhang
Copy link
Author

func uniqx(s string, uniq string) string {
	var (
		ans  string
		flag bool
	)
	flag = false
	for _, cur := range s {
		// 如果上一个是相同的,而且当前还是 uniq
		if flag == true && string(cur) == uniq {
			continue
		}
		// 判断是否一样
		if string(cur) != uniq {
			flag = false
		} else if string(cur) == uniq {
			flag = true
		}
		ans += string(cur)
	}
	return ans
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment