题解 | #找出字符串中第一个只出现一次的字符#

找出字符串中第一个只出现一次的字符

https://www.nowcoder.com/practice/e896d0f82f1246a3aa7b232ce38029d4

//用一个map记录重复的字符串
//遍历字符串找到第一个不重复的
package main

import (
	"fmt"
)

type Emptyr struct{}

func main() {
	var str string
	fmt.Scan(&str)

	//1. 建立一个map当set使用
	em := Emptyr{}
	myset := make(map[string]Emptyr)

	//2. 遍历字符串 如果字符不在map里, 就添加到map,然后遍历字符看看是否重复
	//如果在map里 就取出下一个字符向后遍历
	counter := 0
	flag2 := true //如果所有字符都重复 取出flag变量 用于打印-1

	for counter < len(str) {
		flag := true //flag用于标记当前字符是否重复 如果为false说明重复了 就跳出循环 判断下一个字符
		temp := str[counter : counter+1]
		_, ok := myset[temp]
		if !ok {
			myset[temp] = em

			for i := counter + 1; i < len(str); i++ {
				if str[i:i+1] == temp {
					flag = false
					break
				}
			}
            flag2 = flag
            
			if flag {
				fmt.Println(temp)
				break
			}

		}
		counter++
	}
	if !flag2 {
		fmt.Println(-1)
	}

全部评论

相关推荐

M_bao:换个排版吧哥们,看着费劲
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务