package main
import (
"fmt"
"strings"
)
func removeSameChar(charList []string) []string {
subStrList := make([]string, 0)
for i := 0; i < len(charList)-1; i++ {
itemChars := make([]string, 0)
itemChars = append(itemChars, charList[i])
for j := i + 1; j < len(charList); j++ {
if charList[i] == charList[j] {
itemChars = append(itemChars, charList[j])
subStrList = append(subStrList, strings.Join(itemChars, ""))
i = j
}
break
}
}
inputStr := strings.Join(charList, "")
for _, subStr := range subStrList {
inputStr = strings.ReplaceAll(inputStr, subStr, "")
}
charCount := len(inputStr)
charListTemp := make([]string, charCount)
for i, char := range inputStr {
charListTemp[i] = string(char)
}
if len(charListTemp) == len(charList) {
return charListTemp
} else {
return removeSameChar(charListTemp)
}
}
func main() {
var inputStr string
fmt.Scan(&inputStr)
charCount := len(inputStr)
charList := make([]string, charCount)
for i, char := range inputStr {
charList[i] = string(char)
}
subList := removeSameChar(charList)
fmt.Println(len(subList))
}
总结:题目要求只检测两个相同的字符,如果有多个相同的字符反而只消除头两个;另外可以使用堆栈的方式处理,空间复杂度会更低,后面有时间我再试试堆栈的方法