前言:
目前各位老铁们对“c语言字符串计数”都比较注意,朋友们都需要了解一些“c语言字符串计数”的相关内容。那么小编也在网摘上网罗了一些有关“c语言字符串计数””的相关知识,希望姐妹们能喜欢,同学们快快来了解一下吧!题目
给你一个字符串 word ,该字符串由数字和小写英文字母组成。
请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。
注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123"、"34"、"8" 和 "34" 。
返回对 word 完成替换后形成的 不同 整数的数目。
只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。
示例 1:输入:word = "a123bc34d8ef34" 输出:3
解释:不同的整数有 "123"、"34" 和 "8" 。注意,"34" 只计数一次。
示例 2:输入:word = "leet1234code234" 输出:2
示例 3:输入:word = "a1b01c001" 输出:1
解释:"1"、"01" 和 "001" 视为同一个整数的十进制表示,因为在比较十进制值时会忽略前导零的存在。
提示:1 <= word.length <= 1000
word 由数字和小写英文字母组成
解题思路分析
1、内置函数;时间复杂度O(n),空间复杂度O(n)
func numDifferentIntegers(word string) int { m := make(map[string]bool) arr := strings.FieldsFunc(word, func(r rune) bool { return 'a' <= r && r <= 'z' }) for i := 0; i < len(arr); i++ { s := strings.Trim(arr[i], " ") for len(s) > 0 && s[0] == '0' { s = s[1:] } m[s] = true } return len(m)}
2、遍历;时间复杂度O(n),空间复杂度O(n)
func numDifferentIntegers(word string) int { m := make(map[int]bool) for i := 0; i < len(word); i++ { if '0' <= word[i] && word[i] <= '9' { value := int(word[i] - '0') for i+1 < len(word) && '0' <= word[i+1] && word[i+1] <= '9' { i++ value = value*10 + int(word[i]-'0') } m[value] = true } } return len(m)}总结
Easy题目,熟练使用内置函数,也可以遍历,借助map去重
标签: #c语言字符串计数