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”, 返
LeetCode第23題:合併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(
【LeetCode】387. 字串中的第一個唯一字元
題目連結: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. 注意事項:您可以假定該字串只包含小寫字母。 思路:尋找字串中的第一個不
leetcode第32題:最長有效括號(遇到一個奇葩的錯誤)
問題描述: 給一個只包含 '(' 和 ')' 的字串,找出最長的有效(正確關閉)括號子串的長度。 對於 "(()",最長有效括號子串為 "()" ,它的長度是 2。 另一個例子 ")()())",最長有效括號子
swift 字串中的第一個唯一字元 - LeetCode
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 class Solut
LeetCode題目--字串中的第一個唯一字元(python實現)
題目 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 p