第一个只出现一次的字符

核心解题思路:运用字母的ASCII码值来进行比对
- 解题思路:先判断字符串为空的一种情况(比较简单)。接着开始分析怎么才能取出只出现一次的元素们,再接着考虑将在这些元素里第一个出现的return出来
- 设定一个用来比对的字符“a",ASCII码值为97(swift里可以调用asciiValue方法来得出字母的ASCII码值)
- 设定一个用来存储原字符串中各(字母)元素出现次数的数组,数组初始化将所有元素置为0。
- 进行字符串内的遍历循环,用字符的ASCII码值和“a”的差值作为数组元素的下标,用该字符重复出现的次数作为对应数组元素的值。即依次可得到原字符串中各元素出现的次数。
- 完成上述次数录入后,再次依次进行遍历循环,可知字符对应数组元素为1的值即为出现一次的字符。由于是按顺序遍历,那么return得到的字符即为要求的第一个只出现一次的字符。
代码实现(swift)
class Solution {
func firstUniqChar(_ s: String) -> Character {
let a : Character = "a"
let a_ascii = a.asciiValue
//情况一:判空
if s.count == 0 {
return " "
}
var arr = Array(repeating:0,count:26) //创建了26个元素个个值全为0的数组
for char in s {
let tem = Int(char.asciiValue! - a_ascii!)//强制解包,否则将返回一个可选数据类型报错
arr[tem] += 1
}
for char in s {
let tem = Int(char.asciiValue! - a_ascii!)
if arr[tem] == 1 {
return char
}
}
return " "
}
}
版权声明:本文为qq_51466163原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。