在乙個字串(1<=字串長度<=10000,全部由字母組成)中找到第乙個只出現一次的字元,並返回它的位置
思路1:利用map儲存每個字母的值和出現的次數,判斷第乙個只出現一次的字元
class solution
return -1; //如果沒有找到則返回-1
}};
思路2:利用hash表
class solution ;
for(int i = 0; i < str.size(); i++)
hashtime[str[i]]++; //在hash表中統計各字母出現次數
for(int i = 0; i < str.size(); i++)
return -1;
}};
在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。
class solution
mapmp;
for(int i = 0; i < length; i++)
mp[numbers[i]]++; //統計次數
for(int i = 0; i < length; i++)
}return false;
}};
思路2:利用map,計算每個數出現的次數,只要有次數不為1的,則輸出並返回true
最簡單的方法:構造乙個容量為n的輔助陣列b,原陣列a中每個數對應b中下標,首次命中,b中對應元素+1。如果某次命中時,b中對應的不為0,說明,前邊已經有一樣數字了,那它就是重複的了。
舉例:a,剛開始b是,開始掃瞄a。
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 3 ,到這一步,就已經找到了重複數字。
a[4] = 4
a[5] = 5
class solution
mapmp;
for(int i = 0; i < length; i++)
}return false;
}};
第乙個只出現一次的字元
題目 在乙個字串中找到第乙個只出現一次的字元。如輸入 abaccdeff,則輸 出b。分析 這道題是 2006年google的一道筆試題。看到這道題時,最直觀的想法是從頭開始掃瞄這個字串中的每個字元。當訪問 到某字元時拿這個字元和後面的每個字元相比較,如果在後面沒有發現重複的字 符,則該字元就是只出...
第乙個只出現一次的字元
題目 在乙個字串中找到第乙個只出現一次的字元,並輸出它在字串中的位置。如輸入 abaccdeff,則輸出 b 1。定義乙個256長度的陣列,乙個用來記錄字元出現的次數。然後在遍歷字元陣列,如果該字元出現了一次,輸出並結束,否則繼續。include using namespace std 在乙個字串中...
第乙個只出現一次的字元
1.問題描述 在字串中找出第乙個只出現一次的字元。例如輸入abaccdeff,則輸出 b。來自 劍指offer 2.分析 我們可以用乙個容器來存放 對應的字元和出現次數 雜湊表 這裡僅僅用陣列來簡單的模擬了一下 第一次掃瞄時將出現的次數存放在表中,第二次掃瞄時掃瞄到次數為1的字元並返回該字元即可。表...