中國官方網(wǎng)站認(rèn)證中心100個(gè)成功營銷案例
今天是學(xué)習(xí)新知識(shí)的一天,String 類中有太多細(xì)枝末節(jié),需要我去學(xué)習(xí)跟掌握了。
話不多說,今天給大家?guī)硪坏雷址念}目~
一、題目
給定一個(gè)字符串?s
?,找到?它的第一個(gè)不重復(fù)的字符,并返回它的索引?。如果不存在,則返回?-1
?。
注意:
s
?只包含小寫字母
示例 1:
輸入: s = "leetcode" 輸出: 0
示例 2:
輸入: s = "loveleetcode" 輸出: 2
示例 3:
輸入: s = "aabb" 輸出: -1
二、思路解析
這道題我的做法是,創(chuàng)建一個(gè)用于計(jì)數(shù)的數(shù)組 count [ ],元素個(gè)數(shù)為 26 ,因?yàn)轭}中要求 “?s
?只包含小寫字母 ”。
然后我對(duì)字符串進(jìn)行了一次遍歷操作,為的是用 CharAt 函數(shù)取出每一個(gè)元素,并賦值給一個(gè)新字符 ch 。
這樣我們就能通過 [ch-'a'] 來訪問計(jì)數(shù)數(shù)組 count 的元素下標(biāo)了,并對(duì)其進(jìn)行 ++ 操作。
接下里一步就是重新遍歷一次,并作出判斷,題目要求的 “第一次出現(xiàn)的不重復(fù)的字符串” ,在我們看來,也就是 count [ ] == 1 而已,符合條件的直接返回即可。
同樣,不符合直接返回 -1 ,這道題到這里也就解決了~
三、完整代碼
class Solution {public int firstUniqChar(String s) {int[] count = new int [26];for(int i = 0;i < s.length();i++){char ch = s.charAt(i);count[ch-'a']++;}for(int j = 0;j < s.length();j++){char ch = s.charAt(j);if(count[ch-'a'] ==1){return j;}}return -1; }}
以上就是本篇博客的全部內(nèi)容啦,如有不足之處,還請(qǐng)各位指出,期待能和各位一起進(jìn)步!