2019-03-18-算法-进化(字符串中的第一个唯一字符)
生活随笔
收集整理的這篇文章主要介紹了
2019-03-18-算法-进化(字符串中的第一个唯一字符)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
給定一個字符串,找到它的第一個不重復的字符,并返回它的索引。如果不存在,則返回 -1。
案例:
s = "leetcode" 返回 0.s = "loveleetcode", 返回 2.注意事項:您可以假定該字符串只包含小寫字母。
思路1:暴力破解法,時間復雜度:O(n^2),空間復雜度O(1)
/*** 思路1:暴力破解* @param s* @return*/ public int firstUniqChar(String s) {if(s.length()==1) {return 0;}for(int i=0;i<s.length();i++) {int j=0;for(j=0;j<s.length();j++) {if(j==i) {continue;}if(s.charAt(i) ==s.charAt(j)) {break;}else if (j == s.length()-1) {return i;}}if(i == s.length()-1 && j == s.length()) {return s.length()-1;}}return -1;}思路2
/*** 思路2:* 1:統計每個字母出現的次數(HashMap,key為char,value=次數)* 2:查找僅出現一次的元素* 時間復雜度O(n)* 空間復雜度O(1)* @param s* @return*/public int firstUniqChar(String s) {Map<Character, Integer> map = new HashMap<Character, Integer>();for(int i=0;i<s.length();i++) {map.put(s.charAt(i), map.get(s.charAt(i))==null?1:map.get(s.charAt(i))+1);}for(int i=0;i<s.length();i++) {if(map.get(s.charAt(i)) ==1) {return i;}}return -1;}思路3
當前最佳
總結
以上是生活随笔為你收集整理的2019-03-18-算法-进化(字符串中的第一个唯一字符)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019-03-15-算法-进化(有效的
- 下一篇: 2019-03-18-算法-进化(实现s