0x00:前言
- 实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
- 来源:力扣(LeetCode)
- Sample Input
s1 = "leetcode"
s2 = "abc"
- Sample Output
false
true
- 限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
0x01:思路
- 简单粗暴用MAP
- 声明并初始化一个map用于存放值;
- 将传入值转化为rune(这一步是为了考虑中文字符);
- 遍历转化后的字符串,取出字符,放入map中进行查询;
- 若字符已存在map中,函数返回false;
- 若字符不存在map中,则将字符存入map进入下一次循环;
- 若循环结束后,并没有在map中找到该字符,则返回true.
0x02:代码
package main
import "fmt"
func main() {
s1 := "leetcode"
s2 := "abc"
fmt.Printf("Input:%s,result:%v \n",s1,isUnique(s1))
fmt.Printf("Input:%s,result:%v \n",s2,isUnique(s2))
}
func isUnique(astr string) bool {
str := []rune(astr)
strMap := make(map[rune]int)
for i , ch := range str{
_,ok := strMap[ch]
if ok {
return false
}
strMap[ch] = i
}
return true
}