運用了string的substring方法和equals方法 str.substring(start包括,end不包括).equals(des);java
把第一個做爲模版res,若是index(res)!=0則證實當前模版不是前綴,index(res)爲-1表明不存在,用substring()方法把模版減小一位git
🌟測試用例說若是string的末尾不是字母就一直跳過到字母,用Character.isLetter()數組
先創建一個新的array把全部的char-'a'存入array中,再次for循環若是遇到了值爲1的則是第一個惟一字符app
先變成array再用雙指針調換位置測試
雙指針從兩邊向中間查找元音字母而後交換,須要注意的一點是str.contains()裏的東西若是是char須要用char+""變成string O(n) O(1)ui
雙指針,和345思路徹底相同,注意大小寫str.toLowerCase(),注意是否是數字Character.isDigit()不能斷定負數spa
雙指針指針
HashMap把字母和單詞看成鍵值對存入,主要斷定條件,能夠更簡便的方式來聲明map:code
Map map = new HashMap();
複製代碼
新建List<List>和HashMap<String,Integer>->用toCharArray,sort,new String把單詞排序而後判斷map裏是否存在,若是存在就往list裏的現存sublist加,若是不存在則新建sublist排序
先判斷長度是否相同,而後用字母表array存下來一個string加加,再用第二個string減減
創建一個stack來存取右邊的括號,stack: push(), pop(), empty(), peek()
🌞🌞🌞Sliding Window.
class Solution {
public String minWindow(String s, String t) {
if(t.length()>s.length()||s==null) return "";
int[] cnt = new int[128];
for(char c : t.toCharArray()){
cnt[c]++;
}
int from = 0;
int min = Integer.MAX_VALUE;
int total = t.length();
for(int i=0, j=0; i<s.length(); i++){
if(cnt[s.charAt(i)]-->0) total--;
while(total==0){
if(i-j+1<min){
min = i-j+1;
from = j;
}
if(++cnt[s.charAt(j++)]>0) total++;
}
}
return (min==Integer.MAX_VALUE)? "":s.substring(from,from+min);
}
}
複製代碼
存到hashmap裏,for循環(s-t).length,查看是否都符合hashmap裏的詞彙。
class Solution {
public List<Integer> findSubstring(String s, String[] words) {
List<Integer> list = new ArrayList<>();
if(s==null || words==null || s.length()==0 ||words.length==0) return list;
HashMap<String, Integer> map = new HashMap<>();
for(int i=0; i<words.length; i++){
if(map.containsKey(words[i])){
map.put(words[i], map.get(words[i])+1);
}else{
map.put(words[i], 1);
}
}
for(int i=0; i<=s.length()-words.length*words[0].length();i++){
HashMap<String, Integer> copy = new HashMap<>(map);
int j = i;
int count = words.length;
while(count>0){
String str = s.substring(j, j+words[0].length());
if(!copy.containsKey(str)||copy.get(str)<=0){
break;
}else{
copy.put(str, copy.get(str)-1);
j += words[0].length();
count--;
}
}
if(count==0) list.add(i);
}
return list;
}
}
複製代碼