1. 程式人生 > >2015 去哪兒校招---字串中第一個重複的字元

2015 去哪兒校招---字串中第一個重複的字元

對於一個字串,請設計一個高效演算法,找到第一次重複出現的字元。

給定一個字串(不一定全為字母)A及它的長度n。請返回第一個重複出現的字元。保證字串中有重複字元,字串的長度小於等於500。

測試樣例:
"qywyer23tdd",11
返回:y
與劍指offer面試題中第35類似。但是有區別,那個是求第一個指只出現一次的字元,但是這個題目是求第一次重複的字元。
求:第一個指只出現一次的字元。遍歷兩次字串,第一次遍歷是把每個字元都儲存到hashmap中,對應的值是出現的次數。
第二次遍歷則是找出出現第一次的字元。 
而本體求第一次重複的字元,應該是隻需遍歷一遍字串,遍歷的過程中判斷當前遇到的字元之前是否出現過,如果出現過則返回,
否則繼續讀下面的字元。

如kfdaaak的第一個出現重複的字元是a而不是k。

/**
	 * 與劍指offer面試題中第35類似。但是有區別,那個是求第一個指只出現一次的字元,但是這個題目是求第一次重複的字元。
	 * 求:第一個指只出現一次的字元。遍歷兩次字串,第一次遍歷是把每個字元都儲存到hashmap中,對應的值是出現的次數。
	 * 第二次遍歷則是找出出現第一次的字元。 
	 * 而本體求第一次重複的字元,應該是隻需遍歷一遍字串,遍歷的過程中判斷當前遇到的字元之前是否出現過,如果出現過則返回,
	 * 否則繼續讀下面的字元。
	 * 如kfdaaak的第一個出現重複的字元是a而不是k。
	 */
	 public char findFirstRepeat(String A, int n) {
		 HashMap<Character,Integer> map = new  HashMap<Character,Integer> ();
		 char c = 0 ;
		 for(int i=0;i<n;i++){
			 c = A.charAt(i);
			 if(map.containsKey(c)){
				 return c;
			 }
			 map.put(c, 1);
		 }
		 return c;
	    }


相關推薦

2015 哪兒---字串第一重複字元

對於一個字串,請設計一個高效演算法,找到第一次重複出現的字元。 給定一個字串(不一定全為字母)A及它的長度n。請返回第一個重複出現的字元。保證字串中有重複字元,字串的長度小於等於500。 測試

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

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

字串第一重複字元

import java.util.HashMap; import java.util.Map; public class Main { public Character findFirst

如何找出字串第一重複字元,Java和Python的分別實現

遇到一個問題,網上有很多教程,在沒看的情況下,自己先寫了幾種方法,僅供參考: Python實現方式:(三種方法,執行效率有差異) # _*_ coding:utf-8 _*_ import time # 傳參方式 str = "=WUKVJPLKKPYBUI=JAOCFCJJIYKGN

劍指Offer-50 字串第一只出現一次的字元

題目: 在字串中找出第一個只出現一次的字元。如輸入"abaccdeff",則輸出b。如果字串中不存在只出現一次的字元,返回#字元。 解答: class Solution: def firstNotRepeatingChar(self, s): """

python字串面試題:找出一個字串第一字母和最後一個字元第一重複,中間沒有重複且最長的子串

1.給出任意一個字串,列印一個最長子串字串及其長度,如果有相同長度的子字串,都要一起打印出來,該子字串滿足以下條件, 第一個字母和最後一個字元是第一次重複 這個子字串的中間字母沒有重複 這個子字串是滿足條件裡面的最長的 如: adsasadmasd 中滿足條件的是dmasd   im

查詢字串第一重複字元

題目要求: 找到字串中第一個不重複的字元,並按原字元顯示,要求可以區分大小寫,預設不區分,true 表示區分, false表示不區分大小寫 示例:輸入Abcad,輸出b; 輸入Abcad true ,輸出A; 輸入Abcad false, 輸出 b

找到字串第一重複的元素

題目:在一個字串中找到第一個沒有重複元素的字元並返回。 例:輸入:"yellow"      返回:“y”   輸入:"tooth"   返回:“h”   輸入:“coco”   返回:“” 按照人類思維來判斷的話,比較該元素與後面的元素,如果相同,再比較

找出給定字串第一重複字元

給定一串字串,找出其中第一個不重複的字元。 如:輸入”abcddcaeb1~soop”,輸出’e’ 方法一 思路: 定義list<char> store和list<char> storeDel,對輸入字串str進行遍歷,對st

【Java筆試題】輸出字串第一重複字元

1、題目 在一個字串中找到第一個只出現一次的字元。例如,輸入“abaccdeff”,則輸出b。 2、Java程式碼 public class RetStr { public static

獲取一個字串第一只出現過一次的字元及其位置

分析: 首先我們需要統計得到所有字元出現的次數以及其位置,然後比對出現次數為1的字元的位置,最小的即所求 假設字串為: 'stringisastaringb' 解法一: def f

劍指offer--找出字串第一只出現一次的字元(題面已經更新)C++

題目描述: 找出字串中第一個只出現一次的字元 輸入描述: 輸入一個非空字串 輸出描述: 輸出第一個只出現一次的字元,如果不存在輸出-1 示例1 輸入 asdfasdfo 輸出 ö 程式碼實現如下: #include<iostream>

java實現--字串第一單獨出現的字元

需求:     給定一個由大寫字母組成的字串,返回第一個單獨出現的字母 分析:     1、思路一     建立HashMap集合,遍歷字串,將各個字母及對應的角標存到集合中,再次遍歷字串,看當前字元對應的角標和HashMap集合中的角標是否相同,如果相同就直接返回,如果不

【每日一題】查詢一個字串第一只出現兩次的字元

題目:查詢一個字串中第一個只出現兩次的字元。比如:“abcdefabcdefabc”中第一個只出現兩次為‘d’,要求時間複雜度為O(N),空間複雜度為O(1) 解決方法:可以使用雜湊表統計每個字元出現的次數。因為字元只有256種可能,所以我們可以申請一個25

找出字串第一重複的字母

昨天看到一個面試題,說是要在一個字串中找到第一個不重複的字元。 初始思路如下: 掃描一遍字串,生成一個連結串列,越早出現的字元越靠近連結串列頭,最後出現的在連結串列尾。每次從字串中掃描到一個字元後,在連結串列中搜索,找到則其計數加一,否則加入到連結串列尾。最後遍歷這個連結串

找出一個字串第一只出現一次的字元

題目:在字串中找出第一個只出現一次的字元。如輸入 “abaccdeff”,則輸出b。 思路分析: (1)由於題目與字元出現的次數相關,那麼是不是可以統計每個字元在該字串中出現的次數?要達到這個目的,我們需要一個數據容器來存放每個字元出現的次數。在這個容器中可

查詢字串第一只出現一次的字元

考研的時候學習過雜湊函式,但這只是書本上的知識,簡單的理解,從來沒用過,也不知道怎麼用,直到學了第一堂演算法課,原來hash表可以用陣列模擬,統計數字或字元出現的次數。 程式碼如下: int CHash::getStuNum(int* data, int len, in

【劍指】面試題50 字串第一只出現一次的字元

演算法思想        我們可以考慮實現一個簡單的雜湊表,字元是一個長度為8的資料型別,因此共有256中可能。於是我們建立一個長度為256的陣列,每個字母根據其ASCII嗎值作為陣列的下標對應陣列的

C語言面試題:查詢字串第一重複字元

char findChar(char *s) { char *p,*q; p=q=s; while(*s != '\0') { while(*p++ != '\0')

字串不包含重複字元的最長子串的長度

題: 已知一個字串,求這個字串中不包含重複字元的最長子串的長度,如abba返回2,aaaaabc返回3,bbbbbbb返回1. 解題思路: 藉助hashmap來解決,map的鍵key存放字串中出現的