真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python教程:字符串中的第一個唯一字符-創(chuàng)新互聯(lián)

Python教程——字符串中的第一個唯一字符

為柘城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及柘城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計制作、網(wǎng)站制作、柘城網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

題目:

給定一個字符串,找到它的第一個不重復(fù)的字符,并返回它的索引。如果不存在,則返回 -1。

案例:

s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.

注意事項:您可以假定該字符串只包含小寫字母。

解題思路:

很簡單的題,無非就是對字符串的字母進行頻率統(tǒng)計,找到出現(xiàn)頻率為1 的字母索引。

借助哈希映射兩次遍歷完成。第一次遍歷進行字母頻率統(tǒng)計,Hash Map 的Key 為字母,Value 為出現(xiàn)頻率。第二次遍歷找到頻率為 1 的字母索引返回即可。

不同于單詞頻率統(tǒng)計,字母一共只有 26 個,所以可以直接利用 ASii 碼表里小寫字母數(shù)值從 97~122,直接用 int 型數(shù)組映射。建立映射:索引為 小寫字母的 ASii 碼值,存儲值為出現(xiàn)頻率。

哈希映射解題:

Java:

class Solution {
 public int firstUniqChar(String s) {
 char[] chars = s.toCharArray();//轉(zhuǎn)成 Char 數(shù)組
 Map map = new HashMap<>();
 for (Character c: chars) map.put(c, map.getOrDefault(c, 0) + 1);//頻率統(tǒng)計
 for (int i = 0; i < chars.length; i++) {
 if(map.get(chars[i])==1) return i;//找到詞頻為1的字母(只出現(xiàn)一次)返回其索引
 }
 return -1;
 }
}

Python:

class Solution:
 def firstUniqChar(self, s):
 count = collections.Counter(s)# 該函數(shù)就是Python基礎(chǔ)庫里詞頻統(tǒng)計的集成函數(shù)
 index = 0
 for ch in s:
 if count[ch] == 1:
 return index
 else:
 index += 1 
 return -1

數(shù)組映射解題:

Java:

class Solution {
 public int firstUniqChar(String s) {
 char[] chars = s.toCharArray();
 int base = 97;
 int[] loc = new int[26];
 for (char c:chars) loc[c - base] += 1;
 for (int i = 0; i < chars.length; i++) {
 if(loc[chars[i]-base]==1) return i;
 }
 return -1;
 }
}

Python 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)里沒有 char 型,強行使用chr(i)轉(zhuǎn)換,只會導(dǎo)致效率更低

Python教程:字符串中的第一個唯一字符
名稱欄目:Python教程:字符串中的第一個唯一字符-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://weahome.cn/article/pgjog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部