1. 程式人生 > >LeetCode——第387題:字串的第一個唯一字元

LeetCode——第387題:字串的第一個唯一字元

題目:

給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。

案例:

s = “leetcode”
返回 0.
s = “loveleetcode”,
返回 2.

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

程式碼:

package leetCode;

/**
 * 2018.7.20 字串的第一個唯一字元
 * 
 * @author dhc
 *
 */
public class ThreeHundredAndEightSeven {
    //雙重迴圈本辦法,特殊情況考慮不全易出錯    60ms(也是對String的方法不熟)
    public
static int firstUniqChar(String s) { int index = -1; char[] ss = s.toCharArray(); if(ss.length == 1) { return 0; } if(ss.length == 0) { return -1; } out:for(int i = 0;i < ss.length;i++) { for(int j = 0;j < ss.length;j++) { if
(i == ss.length -1 && j == ss.length -1) { index = ss.length -1; } if(ss[i] != ss[j] && j == ss.length -1 && i != j) { index = i; break out; } if(ss[i] == ss[j] && i != j) { break
; } } } return index; } //大佬答案1(思路清晰易懂,本人覺著這個方法挺好,簡單直白) public static int firstUniqChar1(String s) { char[] ss = s.toCharArray(); for (int i = 0; i < ss.length; i++) { char a = s.charAt(i); if(s.indexOf(a) == s.lastIndexOf(a)) { return i; } } return -1; } //大佬答案2(有點繞) public static int firstUniqChar2(String s) { int[] charsCount = new int[26]; //按字母順序標記處有哪些字元,並且儲存對應的出現次數 for (int i = 0; i < s.length(); i++) { charsCount[s.charAt(i) - 'a'] += 1; } for (int i = 0; i < s.length(); i++) { //判斷是否只出現依次,並且第一個出現一次的就返回 if (charsCount[s.charAt(i) - 'a'] == 1) return i; } return -1; } //大佬答案3(有點繞) public static int firstUniqChar3(String s) { int result = -1; for(char c = 'a';c<='z';c++){ int index = s.indexOf(c); if(index != -1 && index == s.lastIndexOf(c)){ //有點繞,就是為了找出“第一個”唯一字元 result = result != -1?Math.min(result,index):index; } } return result; } public static void main(String[] args) { String str = "cc"; System.out.println(firstUniqChar2(str)); } }

相關推薦

LeetCode——387字串第一唯一字元

題目: 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetcode”, 返

LeetCode23合併K有序連結串列(JAVA實現)

題目: 我的解答: 思路很簡單,把所有的資料先讀到ArrayList中然後轉到陣列中,然後排序,然後構建新連結串列 程式碼: /** * Definition for singly-linked list. * public class ListNode {

LeetCode記錄——387字串中的第一唯一字元

題目描述 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetcode”, 返回 2. 思路分析 關鍵問題在於,如何找到第一個不重複字元

每日一--LeetCode 387字串中的第一唯一字元)java

題目描述: 程式碼如下: class Solution { public int firstUniqChar(String s) { String tmp=s; char []data=tmp.toCharArray(); if(

LeetCode387. 字串中的第一唯一字元

題目連結:https://leetcode-cn.com/problems/first-unique-character-in-a-string/description/ 題目描述 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 示例

leetcode有序陣列的中位數

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。 請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 O(log(m + n))。 你可以假設 nums1 和 nums2 不會同時為空。 示例

LeetCode解題 387. 字串中的第一唯一字元

文章已同步更新到本人個人部落格跳轉連結 題目描述: 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含

LeetCode 簡單】85-字串第一唯一字元

宣告: 今天是第85道題。給定n,從 1 到 n 選擇一個數字。 你需要猜我選擇了哪個數字。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除 (手動比心ღ( ´・ᴗ・`

[Leetcode] 387. 字串中的第一唯一字元 java hashmap與ASCII碼

給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 第一種方法(hashmap略慢)

leetcode-387. 字串中的第一唯一字元

一、問題描述給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。案例:s = "leetcode" 返回 0. s = "loveleetcode", 返回 2.方法一:1.程式碼和思路因為字串是不可變的,這裡我們只能建立一個list來記錄列

LeetCode之387Python字串中的第一唯一字元

題目: 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 我的解答: 先計數,

LeetCode——字串中的第一唯一字元

大家好,結束了五一假期,繼續刷題日記。本次題目要求如下:我的思路是這樣的:首先計算出s的長度並將s複製給一個字串cont,進入while迴圈,知道字串s為空,使用.find()函式尋找字串裡是否有與s[0]相同的字元若有,使用remove函式把所有與s[0]相同的字元包括s[

Leetcode演算法(C語言)15--字串中的第一唯一字元

題目:字串中的第一個唯一字元 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetco

LeetCode 排序陣列的中位數 --C++/Python

class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int len1 = nums1.size();

LeetCode——4排序陣列的中位數

兩個排序陣列的中位數 題目:給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 。 請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 O(log (m+n)) 。 輸入:nums1 = [1, 3];nums2 = [2]

LeetCode 3給定一個字串,找出不含有重複字元的最長子串的長度。

public class LeetCode3 { public static void main(String[] args) { /** * LeetCode第3題: * 給定一個字串,找出不含有重複字元的最

leetcode 387. 字串中的第一唯一字元

給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 思路:尋找字串中的第一個不

leetcode32最長有效括號(遇到一個奇葩的錯誤)

問題描述: 給一個只包含 '(' 和 ')' 的字串,找出最長的有效(正確關閉)括號子串的長度。 對於 "(()",最長有效括號子串為 "()" ,它的長度是 2。 另一個例子 ")()())",最長有效括號子

swift 字串中的第一唯一字元 - LeetCode

給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2.   注意事項:您可以假定該字串只包含小寫字母。 class Solut

LeetCode題目--字串中的第一唯一字元(python實現)

題目 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。   p