您的位置:首页 > 编程语言 > C语言/C++

LeetCode 387. First Unique Character in a String (Java+C/C++)

2016-09-14 21:19 267 查看
题意:输出字符串中唯一出现的第一个字符的索引下标

Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1.

Examples:

s = "leetcode"
return 0.

s = "loveleetcode",
return 2.


Java代码:

public class Solution {
public int firstUniqChar(String s) {
char[] arr = s.toCharArray();
int[] cache = new int[26];
for(int i = 0; i < arr.length; i++) {
++cache[arr[i] - 'a'];
}
for(int i = 0; i < arr.length; i++) {
if(cache[arr[i] - 'a'] == 1)
return i;
}
return -1;
}
}


C++代码:

class Solution {
public:
int firstUniqChar(string s) {
int cache[26] = {0};
for(int i = 0; i < s.length(); i++) {
++cache[s[i] - 'a'];
}
for(int i = 0; i < s.length(); i++) {
if(cache[s[i] - 'a'] == 1)
return i;
}
return -1;
}
};


C代码:

int firstUniqChar(char* s) {
int len = strlen(s);
int cache[26] = {0};
for(int i = 0; i < len; i++) {
++cache[s[i] - 'a'];
}
for(int i = 0; i < len; i++) {
if(cache[s[i] - 'a'] == 1)
return i;
}
return -1;
}


解题思路:很显然,需要一个缓存存储每个字符出现的次数;由于题目说明只出现小写字母,所以可以开辟一个26长度的数组存储每个字母出现的次数,遍历两次,具体看代码,时间复杂度O(n)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode