日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

leetcode双指针(python与c++)

發(fā)布時間:2024/7/23 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode双指针(python与c++) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.字符串的排列

思路:雙指針+滑動窗口

python:

class Solution:def checkInclusion(self, s1: str, s2: str) -> bool:dict_={}for i in s1:dict_[i] = dict_.get(i,0)+1# # print('==dict_:',dict_)left,right =0,0length = 0minlen = float('inf')res = ''while right<len(s2):# 向右拓展if s2[right] in dict_:if dict_[s2[right]]>0:#注意要進(jìn)行判斷避免重復(fù)字符length+=1dict_[s2[right]]-=1while length==len(s1):#包含了子串啦 這個時候左邊要壓縮if right-left+1==len(s1):#找最短的return Trueleft+=1if s2[left-1] in dict_:#注意left+1啦 所以要用left-1的字符判斷是否出現(xiàn)在dict_中dict_[s2[left - 1]] += 1if dict_[s2[left-1]]>0:#避免重復(fù)字符造成的減法length-=1right+=1return False

c++:?

class Solution { public:bool checkInclusion(string s1, string s2) {map<char,int> dict_;for (int k=0;k<s1.size();k++){dict_[s1[k]]++;}// map <char,int>::iterator itor = dict_.begin(); // //debug// for(;itor!=dict_.end();itor++)// {// cout<<itor->first<<" "<<itor->second<<endl;// } int right=0;int left=0;int remain_legth =0;while (right<s2.size()){ // cout<<"=dict_[s2[right]:"<<dict_[s2[right]]<<endl;if(dict_[s2[right]]>0){remain_legth+=1;}dict_[s2[right]]-=1;while(remain_legth==s1.size()){if(right-left+1==s1.size()){return true;} left+=1;dict_[s2[left-1]]+=1; if (dict_[s2[left-1]]>0){remain_legth-=1;}}right+=1;}return false;} };

總結(jié)

以上是生活随笔為你收集整理的leetcode双指针(python与c++)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。