题目描述
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
s = “abaccdeff”
返回 “b”
s = “”
返回 " "
限制:
0 <= s 的长度 <= 50000
来源:力扣(LeetCode)
思路
创建两个数组,一个用来存储字符出现的顺序,另一个用来存储出现的个数
利用char和int之间的转换即可
代码
class Solution {
public char firstUniqChar(String s) {
int[] visit=new int[26];
int[] visit_tmp=new int[26];
int tmp=0;
if(s.equals(""))return ' ';
for(int i=0;i<s.length();++i){
int x=s.charAt(i)-'a';
// System.out.println(x);
if(visit[x]<=0)
visit_tmp[tmp++]=x;
++visit[x];
}
for(int i=0;i<26;++i){
if(visit[visit_tmp[i]]==1) return (char)('a'+visit_tmp[i]);
}
return ' ';
}
}
测试代码
public class test1 {
public static void main(String[] args) {
System.out.println(new Solution().firstUniqChar("aaaabiiiodca"));
}
}