備戰藍橋第一天 驗證回文串 楊輝三角

LCR 018. 驗證回文串 - 力扣(LeetCode)

涉及的函數:

int isalnum ( int c );
檢查字符是否為字母數字
int tolower ( int c );
將大寫字母轉換為小寫
void reverse (BidirectionalIterator first, BidirectionalIterator last);
反轉區域中元素的順序 [first,last).

方法一:篩選 + 判斷

對字符串s進行一次遍歷,并將其中的字母和數字字符進行保留,放在另一個字符串t中
這樣我們只需要判斷t是否是一個普通的回文串即可
判斷的方法有兩種。第一種是使用reverse翻轉得到t的逆序字符串
如果這兩個字符串相同,那么t就是回文串

代碼1:

class Solution {
public:bool isPalindrome(string s) {string t;for(auto ch : s){if (isalnum(ch))t += tolower(ch);}string t1(t);reverse(t1.begin(), t1.end());return t1 == t;}
};
//時間復雜度:O(|n|)
//空間復雜度:O(|n|)

第二種是使用雙指針
初始時,左右指針分別指向t的兩側,隨后我們不斷地將這兩個指針相向移動
每次移動一步,并判斷這兩個指針指向的字符是否相同
當這兩個指針相遇時,就說明是回文串

代碼2:

class Solution {
public:bool isPalindrome(string s) {string t;for (char ch: s) {if (isalnum(ch)) {t += tolower(ch);}}int l = 0, r = t.size() - 1;while (l < r) {if (t[l] != t[r]) {return false;}++l;--r;}return true;}
};
//時間復雜度:O(|n|)
//空間復雜度:O(|n|)

方法二:在原字符串上直接判斷

直接在原字符串s上使用雙指針。在移動任意一個指針時,需要不斷地向另一指針的方向移動
直到遇到一個字母或數字字符,或者兩指針重合為止,再判斷這兩個指針指向的字符是否相同

代碼3:

class Solution {
public:bool isPalindrome(string s) {int l = 0, r = s.size() - 1;while (l < r) {//注意要再次判斷l<r,防止死循環//遇不到字母或數字就一直向后走while (l < r && !isalnum(s[l])) {++l;}//遇不到字母或數字就一直向前走while (l < r && !isalnum(s[r])) {--r;}if (l < r) {if (tolower(s[l]) != tolower(s[r])) {return false;}++l;--r;}}return true;}
};
//時間復雜度:O(|n|)
//空間復雜度:O(|1|)?

118. 楊輝三角 - 力扣(LeetCode)

代碼1:

//void resize (size_type n, value_type val = value_type());
//調整容器大小class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> vv(numRows);for (int i = 0; i < numRows; ++i) {vv[i].resize(i + 1);vv[i][0] = vv[i][i] = 1;for (int j = 1; j < i; ++j) {//下標等于上面加左上vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];}}return vv;}
};
時間復雜度:O(numRowsD平方)。
空間復雜度:O(1)。

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

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

相關文章

【實戰】提升List性能方法有幾何

在內存中的 List<T> 上使用 LINQ 查詢時&#xff0c;加索引并不像數據庫那樣有內置支持&#xff0c;但可以通過以下方式提高查詢性能&#xff1a; 1. 手動構建索引 可以手動構建一個字典 (Dictionary<TKey, TValue>)&#xff0c;將需要查詢的字段作為鍵&#xff0…

一款免費、簡單、快速的JS打印插件,web 打印組件,基于JavaScript開發,支持數據分組,快速分頁批量預覽,打印,轉pdf,移動端,PC端

前言 在數字化辦公時代&#xff0c;打印需求呈現多樣化和復雜化的趨勢。現有的打印軟件往往存在cao作繁瑣、兼容性差、功能單一等問題&#xff0c;難以滿足現代企業高效、靈活的打印需求。 為了解決這些痛點&#xff0c;一款簡單、高效、多功能的打印插件成為了迫切需求。 介…

Python pywin32庫詳解

一、引言 在Python編程中&#xff0c;有時候需要與Windows操作系統進行交互&#xff0c;執行一些特定的系統操作或操作 Windows 應用程序。這時&#xff0c;pywin32庫就成為了一個非常強大的工具。pywin32庫提供了對Windows API的訪問&#xff0c;使得Python開發者能夠在Windo…

Uniapp的vue、nvue、uvue后綴名區別

在 UniApp 中&#xff0c;.vue、.nvue 和 .uvue 是不同的文件后綴名&#xff0c;每個文件格式的使用場景和兼容性略有不同。下面是每個文件后綴的詳細解釋以及它們的兼容性&#xff1a; 1. .vue 文件 定義&#xff1a;.vue 是標準的 Vue 單文件組件格式&#xff0c;主要用于基…

TCP/IP雜記

TCP三次握手、四次揮手 從應用角度&#xff0c;不用多考慮為什么有三次&#xff0c;遵循標準即可。 ubuntu 下 wireshark安裝&#xff1a; sudo add-apt-repository universe sudo apt install wireshark 三次握手實證&#xff1a; 第一次握手的情況如下&#xff1a;&#…

Vue前端開發-接收跳轉參數

路由攜帶參數跳轉到目標頁面后&#xff0c;頁面組件可以接收到攜帶傳入的參數&#xff0c;接收的方式與攜帶的方式相關&#xff0c;如果是采用查詢字符串方式攜帶&#xff0c;那么可以通過路由中的query對象獲取到參數&#xff0c;如果是其他方式&#xff0c;通常都是通過路由中…

力扣--LCR 177.撞色搭配

題目 整數數組 sockets 記錄了一個襪子禮盒的顏色分布情況&#xff0c;其中 sockets[i] 表示該襪子的顏色編號。禮盒中除了一款撞色搭配的襪子&#xff0c;每種顏色的襪子均有兩只。請設計一個程序&#xff0c;在時間復雜度 O(n)&#xff0c;空間復雜度O(1) 內找到這雙撞色搭配…

[ComfyUI]批量生成圖片的節點:輸入一個prompt列表批量生成圖像

文章目錄 1.參考資料2.兩個節點的部署FizzNodes節點comfyui-mixlab-nodes 生成的結果展示 1.參考資料 如何使用ComfyUI一次批量生成不同內容的圖片 ComfyUI工作流】隨機提示詞批量出圖&#xff0c;懶人刷圖福音&#xff0c;根據提示 2.兩個節點的部署 FizzNodes節點 fizzn…

【實操GPT-SoVits】聲音克隆模型圖文版教程

項目github地址&#xff1a;https://github.com/RVC-Boss/GPT-SoVITS.git官方教程&#xff1a;https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/tkemqe8vzhadfpeu本文旨在迅速實操GPT-SoVits項目&#xff0c;不闡述技術原理&#xff08;后期如果有時間研究&#…

5G模組AT命令腳本-關閉模組的IP過濾功能

關閉模組的IP過濾功能 關閉模組的IP過濾功能 5G 模組通常使用nat方式為 下掛設備或上位機提供上網服務&#xff0c;默認情況&#xff0c;不做NAt的包無法經由 模組轉發&#xff0c;如果禁掉這個限制 &#xff0c;可使用本文中的配置命令本腳本用于關閉模組的IP過濾功能&#xf…

JAVA (Springboot) i18n國際化語言配置

JAVA i18n國際化語言配置 一、簡介二、功能三、Java配置國際化步驟四、Java國際化配置工具類五、Spring Boot配置六、測試 一、簡介 在Java中&#xff0c;國際化&#xff08;Internationalization&#xff0c;通常簡稱為i18n&#xff09;是一個過程&#xff0c;它允許應用程…

如何創建基于udp的客戶端和服務端

1.先創建好udpServer.hpp、udpServer.cc、udpClient.hpp、udpClient.cc的框架。 #pragma once #include <string> #include <iostream> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <cerrno> #include…

【上線文檔】系統上線方案模板,計算機系統上線保障計劃,系統運維信息系統運行保障方案,系統上線方案模板(Word原件)

一、項目背景和目標 二、項目需求分析 2.1 功能需求 2.2 非功能需求 三、系統設計 3.1 系統架構設計 3.2 數據庫設計 3.3 接口設計 3.4 用戶界面設計 四、系統開發 4.1 開發環境搭建 4.2 業務邏輯開發 4.3 數據庫實現 4.4 接口實現 4.5 用戶界面實現 五、系統測…

大模型應用的數字能源數據集

除了尚須時日的量子計算解決算力效率和能源問題&#xff0c;以及正在路上的超越transformer的全新模型架構外&#xff0c;無疑是“數據集”&#xff0c;準確講是“高質量大規模多樣性的數據集”。數據集是大模型發展的核心要素之一&#xff0c;是大計算的標的物&#xff0c;是實…

【OpenCV】圖像轉換

理論 傅立葉變換用于分析各種濾波器的頻率特性。對于圖像&#xff0c;使用 2D離散傅里葉變換&#xff08;DFT&#xff09; 查找頻域。快速算法稱為 快速傅立葉變換&#xff08;FFT&#xff09; 用于計算DFT。 Numpy中的傅立葉變換 首先&#xff0c;我們將看到如何使用Numpy查…

如何使用Java編寫Jmeter函數

Jmeter 自帶有各種功能豐富的函數&#xff0c;可以幫助我們進行測試&#xff0c;但有時候提供的這些函數并不能滿足我們的要求&#xff0c;這時候就需要我們自己來編寫一個自定義的函數了。例如我們在測試時&#xff0c;有時候需要填入當前的時間&#xff0c;雖然我們可以使用p…

【2024版】最新kali linux入門及常用簡單工具介紹(非常詳細)從零基礎入門到精通,看完這一篇就夠了

前言 相信很多同學了解到和學習網絡安全的時候都聽過kali系統&#xff0c;大家都稱之為黑客最喜愛的系統&#xff0c;那么什么是kali&#xff0c;初學者用kali能做些什么&#xff0c;大白我將在本文中做詳細的介紹&#xff1a; 一、kali linux是什么&#xff1f; Kali Linux…

使用 electron 把 vue 項目打包成客戶端

1. 新建一個Vue項目 新建一個vue項目&#xff0c;或者在已經寫好的vue項目上操作 2. 安裝依賴包 需要安裝的包有2個 electron electron-builder 安裝失敗的&#xff0c;可看另外一篇解決方法https://blog.csdn.net/Anorry/article/details/144061069?spm1001.2014.3001.5501 3…

六大排序算法:插入排序、希爾排序、選擇排序、冒泡排序、堆排序、快速排序

本章講述數據結構中的六大排序算法 歡迎大佬們踴躍討論&#xff0c;感謝大家支持&#xff01; 我的博客主頁鏈接 六大排序算法 一.插入排序1.1 直接插入排序1.2 希爾排序 二.選擇排序2.1 單向選擇排序2.2雙向選擇排序2.3 堆排序 三.交換排序3.1 冒泡排序3.2 快速排序3.2.1 Hoa…

el-table手動觸發懶加載

二次修改了一下&#xff0c;確保點擊某一單元格格元素觸發 // 隱藏懶加載箭頭后手動觸發懶加載 expandRows(scope){scope.row.isExpanded !scope.row.isExpanded // 切換展開狀態let isExpanded scope.row.isExpandedconst { table: { toggleRowExpansion, store }} this.$r…