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:
Java代码:
C++代码:
C代码:
解题思路:很显然,需要一个缓存存储每个字符出现的次数;由于题目说明只出现小写字母,所以可以开辟一个26长度的数组存储每个字母出现的次数,遍历两次,具体看代码,时间复杂度O(n)
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] Longest Palindromic Substring (Java)
- LeetCode:Reorder List C++与Java实现
- [Leetcode] Roman to Integer (Java)
- [Leetcode] Divide Two Integers (Java)
- [Leetcode] Search in Rotated Sorted Array (Java)
- [Leetcode] Substring with Concatenation of All Words (Java)
- [Leetcode] Integer to Roman (Java)
- [Leetcode] Remove Duplicates from Sorted Array (Java)
- [Leetcode] Implement strStr() (Java)
- LeetCode: Two Sum (Java)
- [Leetcode] Reverse Integer (Java)
- [Leetcode] Generate Parentheses (Java)
- [Leetcode] Longest Substring Without Repeating Characters (Java)
- [Leetcode] String to Integer (atoi) (Java)
- 【leetcode Java】二叉树的递归遍历以及最大深度的求解(Java)
- [Leetcode] Two Sum (Java)
- [Leetcode] ZigZag Conversion (Java)
- [Leetcode] Swap Nodes in Pairs (Java)
- [Leetcode] Longest Valid Parentheses (Java)
- [Leetcode] Search for a Range (Java)