leetcode 392
生活随笔
收集整理的這篇文章主要介紹了
leetcode 392
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題意:判斷s是否為t的子序列。
思路:分別從s和t的開頭開始遍歷,若相等則索引同時加1,否則t的索引加1。
終止條件:若s已經(jīng)遍歷完,則說明在t中找到了s,返回true; 否則t已經(jīng)遍歷完了,返回false。
特殊情況:s為空,返回true。
class Solution { public:bool isSubsequence(string s, string t) {if(s.size() == 0) return true;int s_f = 0, t_f = 0;while(t_f<t.size()){if(s[s_f] == t[t_f]){if(s_f == s.size()-1)return true;s_f ++;t_f ++;}else{t_f++;}}return false;} };與392是同樣的思路。
class Solution { public:int numJewelsInStones(string J, string S) {int cnt = 0;for(int j=0; j<J.size();j++){for(int i=0; i<S.size();i++){if(J[j] == S[i])cnt++;}}return cnt;} };題意:求島嶼(矩陣中值為1)的周長。
思路:矩陣中若值為1則周長+4;若這個1的左邊或上面也是1,則周長-2.
易錯:i>0 && grid[i-1][j]==1 中判斷 i>0 需要放在前面,否則會報棧溢出的錯。
class Solution { public:int islandPerimeter(vector<vector<int>>& grid) {if(grid.empty() || grid[0].empty()) return 0;int cnt = 0;for(int i=0; i<grid.size();i++){for(int j =0; j<grid[0].size(); j++){if(grid[i][j] == 1){cnt +=4;if(i>0 && grid[i-1][j]==1)cnt -= 2;if(j>0 && grid[i][j-1] == 1)//若1的左邊或上面都是1,則-2cnt -=2;}}}return cnt;} };?
轉(zhuǎn)載于:https://www.cnblogs.com/Bella2017/p/10871644.html
總結(jié)
以上是生活随笔為你收集整理的leetcode 392的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL各种类型实验
- 下一篇: ZooKeeper学习第一期---Zoo