LeetCode【5--最長的回文子串】 LeetCode【6--Z字形變換】

最長的回文子串

題目描述

給定一個字符串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。
在這里插入圖片描述

解題思路

可以跟無重復的最長子串一樣,用一個滑動窗口,只不過這個窗口的右邊界往右,左邊界每回要從右邊界的下標往左。
還需要一個二維數組記錄當前窗口中記錄的字符串是不是回文串
再需要一個變量記錄回文串的長度。比較出最大的回文串
例如:baccab

  1. 首先定義右邊界right,左邊界left = right;從右邊界的下標開始,如何判斷當前窗口是否是回文串?第一步:判斷兩端值是否相等str[i] == str[j] ,第二步:判斷窗口去除兩端外,里面的字符串是不是回文串:s[i+1][j-1],如果長度小于3 right-left<=2,并且兩端相同,那么去除兩端必定為回文串 。經過上述判斷則可以說明當前區間就為回文串,所以標記i~j區間中array[i][j] = true; 并記錄回文串并計算長度,如果該區間長度大于之前記錄的回文串的長度再記錄right-left>length。res = susbtr(left,right-left+1); 從左邊界開始截取長度為right - left +1的長度。length = right-left;
  2. 對于baccab來說,首先 str[right] = b ,str[left] = str[right] = b,兩端相同,又因為長度小于3,所以b是回文字符串,array[i][j] =true; 此時長度大于length記錄
  3. 然后right來到a的位置,left也跟著來到a的位置,開始往左走,走到b,判斷兩端不相同,直接下一個循環
  4. right再來到c的位置,往后依次類推…

代碼實現

class Solution {
public:string longestPalindrome(string s) {int n = s.size();//記錄字符串是否為回文字符串vector<vector<bool>> array (n,vector<bool>(n));string res = "";//記錄結果返回int length = 0; //記錄長度,比較出最長的回文子串if(n == 0)return s;if(n == 1)return s;//如果是兩個字符,則返回第一個字符res = s[0]; //外層循環右邊界for(int right = 0;right<n;++right){//內層循環左邊界for(int left = right;left>=0;--left){//判斷是否為回文字串if(s[left] == s[right] //兩頭相等&& (right-left<=2 //長度小于等于3,并且兩頭相等比為回文串||  array[left+1][right-1]) //去掉兩頭,中間也是回文串才是回文串){//標記left~right該區間為回文串array[left][right] = true;if(right-left>length)  //如果回文串長度大于之前記錄的長度,則記錄該串{res = s.substr(left,right-left+1);length = right-left; //記錄新長度}  }}}return res;}
};

Z字形變換

題目描述

將一個給定字符串根據給定的行數,以從上往下、從左到右進行 Z 字形排列。

比如輸入字符串為 “LEETCODEISHIRING” 行數為 3 時,排列如下:
在這里插入圖片描述
在這里插入圖片描述

解題思路

在這里插入圖片描述
一共四行numbers = 4
找規律,

  1. 第0行,0-6-12 , 間隔為6
  2. 第1行,1-5-7-11-13 間隔為4-2-4-2 奇數行
    step-2*1(行)-2*1(行)-step-2*1(行)-2*1(行)
  3. 第2行,2-4-8-10-14,間隔為2-4-2-4 偶數行
    step-2*2(行)-2*2(行)-step-2*2(行)-2*2(行)
  4. 第3行,3-9-15 ,間隔為6

第一行和和最后一行,為step = 2*numbers-2
中間是中間層的下標間距總是step-2*行數,2*行數交替

代碼實現

class Solution {
public:string convert(string s, int numRows) {if(numRows == 1)  //如果只有一行數據直接返回return s;int step = numRows*2 - 2;string res = "";int index = 0; //記錄每行元素的下標int add = 0; //中間行間隔for(int i = 0; i<numRows;++i){index = i; //標記行數add = 2*i ; //出去第0行和numRows-1行中間行的間隔while(index<s.size()) //元素下標大于總個數要換行{res+=s[index];add = step - add ; //變換間隔,index += (i == 0 || i == numRows-1) ? step : add; //每行每個元素的下標都在變}}return res;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383077.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383077.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383077.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

androidstudio 日歷視圖怎么顯示農歷_中秋國慶旅游攻略怎么做?用這個便簽軟件很簡單...

九月已經到來&#xff0c;中秋節和國慶節距離我們也不遠了&#xff0c;今年的中秋和國慶節重疊了有足足八天的假期。不少人都想趁著這個小長假出門旅游&#xff0c;要想保證旅游質量&#xff0c;那么就要做好攻略。中秋國慶旅游攻略怎么做&#xff1f;要想做好一份中秋國慶旅游…

c++ select函數_PySpark 操作函數一覽

PySpark 操作函數一覽Created: Sep 14, 2020 10:28 AM Tags: Big Data, PySpark, Python, SparkPyspark.sql.functionsfrom pyspark.sql import functions as F函數使用說明基本數學函數類abssin、cos、tan、asin、acos 、atan、sinh、cosh、tanhceil、round、floorexp、log、l…

LeetCode【7--整數反轉】 LeetCode【8--字符串轉整數】

整數反轉 題目描述 給出一個 32 位的有符號整數&#xff0c;你需要將這個整數中每位上的數字進行反轉。 解題思路 x%10 取一位&#xff0c;x/10下一位&#xff0c;注意越界&#xff0c; 代碼實現 class Solution { public:int reverse(int x) {int sum 0;while(x){if(s…

word2003如何設置護眼模式_ERP系統上線,如何設置采購收貨的模式,提升企業的采購效率...

如何合理的規劃采購計劃上次去拜訪一個朋友&#xff0c;他們說公司既然出現沒有下達采購訂單&#xff0c;供應商也有送貨過來的事情&#xff0c;對于公司來說&#xff0c;這個是非常嚴重的問題。若用了ERP系統之后&#xff0c;如何避免類似的事情發生&#xff0c;今天我們來分享…

LeetCode【9-- 回文數】LeetCode【10 --正則表達式的匹配】

回文數 題目描述 判斷一個整數是否是回文數。回文數是指正序&#xff08;從左向右&#xff09;和倒序&#xff08;從右向左&#xff09;讀都是一樣的整數。 解題思路 判斷該數的逆序數是不是和原數相同 代碼實現 class Solution { public:bool isPalindrome(int x) {if(…

sun鍵盤沒有stop鍵_請教Sun鍵盤

請教Sun鍵盤(2011-12-24 06:01:11)標簽&#xff1a;計算機雜談請教Sun鍵盤Sun鍵盤上,Help和F1之間的空白鍵是干啥的?Space旁邊的兩個菱形標志的呢?Compose呢?謝謝!請教Sun鍵盤Space旁邊的兩個菱形標志是一個類似Ctrl、Alt的修飾鍵&#xff0c;叫Meta。可以用Meta;鍵名來定義…

LeetCode【11--盛水最多的容器】LeetCode【12 -- 整數轉羅馬數字】

盛水最多的容器 題目描述 給定 n 個非負整數 a1&#xff0c;a2&#xff0c;…&#xff0c;an&#xff0c;每個數代表坐標中的一個點 (i, ai) 。在坐標內畫 n 條垂直線&#xff0c;垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線&#xff0c;使得它們與 x 軸共…

LeetCode【13--羅馬數字轉整數】LeetCode【14--最長的公共前綴】

羅馬數字轉整數 題目描述 羅馬數字包含以下七種字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 例如&#xff0c; 羅馬數字 2 寫做 II &#xff0c;即為兩個并列的 1。12 寫做 XII &#xff0c;即為 X II 。 27 寫做 XXVII, 即為 XX…

linux 編譯3g驅動_linux下使用3G撥號上網 以及3g驅動設置

中興WCDMA模塊 Linux撥號流程Version 1.0目錄1. 測試準備……………………………………………………..…32. 撥號腳本………………………………………………………133. 撥號過程………………………………………………………161. 測試準備本文檔測試模塊&#xff1a;MF210(中興W…

文件壓縮(基于LZ77的壓縮)

LZ77壓縮原理 初始LZ77 LZ77是基于字節的通用壓縮算法&#xff0c;它的原理就是將源文件中的重復字節(即在前文中出現的重復字節)使用(offset&#xff0c;length&#xff0c;nextchar)的三元組進行替換 這里的 長度–offset&#xff0c;距離—length&#xff0c;先行緩沖匹配…

好中的圖像處理方面的期刊_約會中,注意這四個方面,幫助你把握好自己的真愛...

兩個人想要擁有一段美好的感情&#xff0c;那么男生就要掌握好一些技巧去追求對方&#xff0c;在追求的過程中&#xff0c;兩個人的約會也非常重要&#xff0c;畢竟只有約會過程中&#xff0c;女孩子才能夠看到你光鮮亮麗的一面&#xff0c;才能夠慢慢的接受你&#xff0c;如果…

kafka consumer配置拉取速度慢_Kafka消費者的使用和原理

這周我們學習下消費者&#xff0c;仍然還是先從一個消費者的Hello World學起&#xff1a;public class Consumer { public static void main(String[] args) { // 1. 配置參數 Properties properties new Properties(); properties.put("key.des…

前綴和

前綴和 輸入一個長度為n的整數序列。 接下來再輸入m個詢問&#xff0c;每個詢問輸入一對l, r。 對于每個詢問&#xff0c;輸出原序列中從第l個數到第r個數的和。 輸入格式 第一行包含兩個整數n和m。 第二行包含n個整數&#xff0c;表示整數數列。 接下來m行&#xff0c;…

子矩陣的和

題目描述 輸入一個n行m列的整數矩陣&#xff0c;再輸入q個詢問&#xff0c;每個詢問包含四個整數x1, y1, x2, y2&#xff0c;表示一個子矩陣的左上角坐標和右下角坐標。 對于每個詢問輸出子矩陣中所有數的和。 輸入格式 第一行包含三個整數n&#xff0c;m&#xff0c;q。 …

jmeter 循環取值賦值給form_JMeter系列(三)邏輯控制器詳解

循環控制器&#xff1a;指定迭代次數&#xff0c;可以用具體數字&#xff0c;也可以通過變量控制永遠&#xff1a;表示無限循環點擊查看示例&#xff1a;Jmeter實例(四)_圖片爬蟲簡單控制器&#xff1a;這是最基礎的一個控制器&#xff0c;它可以讓腳本分層&#xff0c;變成一個…

c 復雜的前置后置面試題_OPPO Reno拆解:優秀工藝由外而內,復雜用料不負旗艦之名...

OPPO的新系列Reno手機最近吸引了不少注意力&#xff0c;不管是消費者還是手機極客都對其優秀的性能和強大的配置抱有極大的興趣。最近&#xff0c;知名數碼博主愛玩客對Reno十倍變焦版進行了拆解&#xff0c;從內部結構向我們揭示了這部手機的強大之處。并且點評道&#xff1a;…

差分矩陣

題目描述 輸入一個n行m列的整數矩陣&#xff0c;再輸入q個操作&#xff0c;每個操作包含五個整數x1, y1, x2, y2, c&#xff0c;其中(x1, y1)和(x2, y2)表示一個子矩陣的左上角坐標和右下角坐標。 每個操作都要將選中的子矩陣中的每個元素的值加上c。 請你將進行完所有操作后…

python常用的開發環境包括_Python語言主要包括哪些集成開發環境?_學小易找答案...

【填空題】Python的標準隨機數生成器模塊是【簡答題】Why does critical thinking matter?【簡答題】采集瓶子的外形進行創意設計 用點、線、面進行裝飾填充 A4紙手繪,構圖要有新意,要飽滿【簡答題】How can a lack of critical thinking cause a loss of personal freedom?【…

最長連續不重復子序列

題目描述 給定一個長度為n的整數序列&#xff0c;請找出最長的不包含重復數字的連續區間&#xff0c;輸出它的長度。 輸入格式 第一行包含整數n。 第二行包含n個整數&#xff08;均在0~100000范圍內&#xff09;&#xff0c;表示整數序列。 輸出格式 共一行&#xff0c;包…

ocp跟oce的區別 oracle_Oracle視頻10g 11g認證視頻教程 OCA/OCP 從入門到精通 數據庫DBA...

一、認證Oracle OCP認證(Database 10g Administrator Certified Professional)為Oracle公司的數據庫專家的認證。擁有OCP認證說明你擁有了大型Oracle數據庫管理的技術能力&#xff0c;具備了成為大型企業核心數據庫系統管理員的資格。OCE 1Z0-051&#xff1a;Oracle Database 1…