题目链接:
https://leetcode-cn.com/problems/first-unique-character-in-a-string
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
假定所有的字符都是小写。
题解
这道题是要判断字符串中的不重复字符,且是第一个不重复字符,在字符串中这个字符唯一,并且index最靠前。
我们可以新增一个数组arr,将字符串转化为字符数组,遍历字符数组,c-'a'
的值作为arr的index,并且值加1。
然后遍历数组arr,arr[i]==1,i即为我们的预期结果。
arr数组初始化的值都为0,我们第一遍遍历的时候,只有唯一出现的字符,在arr[]里的值才会为1,多次出现值大于1.
下面是代码
public class FirstUniqueCharacter {
public static void main(String[] args) {
String s="leetcode";
int i = firstUniqChar(s);
System.out.println(s.charAt(i));
}
public static int firstUniqChar(String s) {
//数组长度为26,包含了26个小写字母
int[] arr = new int[26];
//目标字符串转为字符数组
char[] charArray = s.toCharArray();
//遍历字符数组,c取值范围是a~z,如果出现,对应的arr[index]值+1
//c-'a'取值是0~25
for (char c : charArray) {
arr[c-'a']++;
}
//遍历arr[],如果arr[i]==1,代表只出现一次,返回
for (int i = 0; i <s.length() ; i++) {
if (arr[charArray[i]-'a'] ==1) {
return i;
}
}
return -1;
}
}
网友评论