**:
這題是豌豆莢二面的乙個演算法題,和leetcode的某些題目類似。其思路是這樣的
首先遍歷一次字串,求出字串不同字元的數目
為每乙個字元儲存乙個列表,記錄該字元在字串**現的索引
記錄待求字串的首字母的索引start(初始值為0),結束索引end(初始值為length-1)
記錄可能的待求字串的首字母的索引值為pstart(初始值為0)
重新遍歷字串,當前索引為index
更新沒有遍歷的字元的數目,更新當前字元對應的索引列表。如果pstart處字元對應的列表長度大於1,則從索引列表中移出pstart,並將pstart加1,並重複該過程
如果index處字元是第一次出現,則將剩餘字元數目減一
如果剩餘字元數目為0時,且子字串[pstart:index]比[start:end]短,則更新[start:end]為[pstart:index]
返回子字串[start:end
你會發現[start:end]為待求字串。可以在紙上畫畫看
class solution
// 記錄目標字串的起始索引
int start = 0, end = str.length() - 1;
// 記錄目標字串的開始位置
int pstart = 0;
map> map = new hashmap>();
for (int index = 0; index < str.length(); index++)
int remainingcharacter = map.keyset().size();
for (int i = 0; i < str.length(); i++)
map.get(c).add(i);
while (map.get(str.charat(pstart)).size() > 1)
if (remainingcharacter == 0) }}
return str.substring(start, end + 1);}}
class testsolution
}---------------------
字串處理 乙個字串包含另乙個字串的所有字元
假設這有乙個各種字母組成的字串,假設這還有另外乙個字串,而且這個字串裡的字母數相對少一些。從演算法是講,什麼方法能最快的查出所有小字串裡的字母在大字串裡都有?比如,如果是下面兩個字串 string 1 abcdefghlmnopqrs string 2 dcgsrqpom 答案是true,所有在st...
php判斷乙個字串包含另乙個字串
a 58252,58253 如果 a 中存在 b,則為 true 否則為 false。b 58253 if strpos a,b false else 查詢字串在陣列中出現的次數 array array 1,hello 1,world hello 11 計算 string在 array 需為陣列 中...
給定乙個字串,找出該字串的最長回文子串
給定乙個字串,找出該字串的最長回文子串。回文字串指的就是從左右兩邊看都一樣的字串,如aba,cddc都是回文字串。字串abbacdc存在的回文子串有abba和cdc,因此它的最長回文子串為abba。public class longpalindromic private static string ...