力扣字符串篇

以下解題思路來自代碼隨想錄以及官方題解。

文章目錄

      • 344.反轉字符串
      • 541.反轉字符串||
      • 151.反轉字符串中的單詞
      • 28.找出字符串中第一個匹配項的下標
      • 459.重復的字符串

344.反轉字符串

編寫一個函數,其作用是將輸入的字符串反轉過來。輸入字符串以字符數組 s 的形式給出。
不要給另外的數組分配額外的空間,你必須原地修改輸入數組、使用 O(1) 的額外空間解決這一問題。

輸入:s = ["h","e","l","l","o"]
輸出:["o","l","l","e","h"]輸入:s = ["H","a","n","n","a","h"]
輸出:["h","a","n","n","a","H"]

這道題很簡單,沒什么難度。

class Solution {public void reverseString(char[] s) {int left = 0;int right = s.length - 1;while (left < right) {char temp = s[left];s[left] = s[right];s[right] = temp;left++;right--;}}
}

541.反轉字符串||

給定一個字符串 s 和一個整數 k,從字符串開頭算起, 每計數至 2k 個字符,就反轉這 2k 個字符中的前 k 個字符。

  • 如果剩余字符少于 k 個,則將剩余字符全部反轉。
  • 如果剩余字符小于 2k 但大于或等于 k 個,則反轉前 k 個字符,其余字符保持原樣。
輸入:s = "abcdefg", k = 2
輸出:"bacdfeg"輸入:s = "abcd", k = 2
輸出:"bacd"
class Solution {public String reverseStr(String s, int k) {char[] ch = s.toCharArray();for (int i = 0; i < ch.length; i = i + 2 * k) {// 如果剩余字符小于 2k 但大于或等于 k 個,則反轉前 k 個字符,其余字符保持原樣。if (i + k <= ch.length) {reverse(ch, i, i + k - 1);continue;}// 如果剩余字符少于 k 個,則將剩余字符全部反轉。reverse(ch, i, ch.length - i);}return new String(ch);}public void reverse(char[] ch, int start, int end) {while (start < end) {char temp = ch[start];ch[start] = ch[end];ch[end] = temp;start++;end--;}}}

151.反轉字符串中的單詞

給你一個字符串 s ,請你反轉字符串中 單詞 的順序。
單詞是由非空格字符組成的字符串。s 中使用至少一個空格將字符串中的單詞分隔開。
返回單詞順序顛倒且單詞之間用單個空格連接的結果字符串。
注意:輸入字符串 s中可能會存在前導空格、尾隨空格或者單詞間的多個空格。返回的結果字符串中,單詞間應當僅用單個空格分隔,且不包含任何額外的空格。

輸入:s = "the sky is blue"
輸出:"blue is sky the"輸入:s = "  hello world  "
輸出:"world hello"
解釋:反轉后的字符串中不能存在前導空格和尾隨空格。輸入:s = "a good   example"
輸出:"example good a"
解釋:如果兩個單詞間有多余的空格,反轉后的字符串需要將單詞間的空格減少到僅有一個。

以下是力扣官方題解

class Solution {public String reverseWords(String s) {// 除去開頭和末尾的空白字符s = s.trim();// 正則匹配連續的空白字符作為分隔符分割List<String> wordList = Arrays.asList(s.split("\\s+"));Collections.reverse(wordList);return String.join(" ", wordList);}
}

28.找出字符串中第一個匹配項的下標

給你兩個字符串 haystackneedle ,請你在 haystack 字符串中找出 needle 字符串的第一個匹配項的下標(下標從 0 開始)。如果 needle 不是 haystack 的一部分,則返回 -1 。

輸入:haystack = "sadbutsad", needle = "sad"
輸出:0
解釋:"sad" 在下標 06 處匹配。
第一個匹配項的下標是 0 ,所以返回 0 。輸入:haystack = "leetcode", needle = "leeto"
輸出:-1
解釋:"leeto" 沒有在 "leetcode" 中出現,所以返回 -1

我自己的解法

class Solution {public int strStr(String haystack, String needle) {if (haystack.length() < needle.length()) {return -1;}int len = needle.length();int i = 0;while (i + len <= haystack.length()) {if (haystack.substring(i, i + len).equals(needle)) {return i;}i++;}return -1;}
}

官方的暴力解法

class Solution {public int strStr(String haystack, String needle) {int n = haystack.length(), m = needle.length();for (int i = 0; i + m <= n; i++) {boolean flag = true;for (int j = 0; j < m; j++) {if (haystack.charAt(i + j) != needle.charAt(j)) {flag = false;break;}}if (flag) {return i;}}return -1;}
}

459.重復的字符串

給定一個非空的字符串 s ,檢查是否可以通過由它的一個子串重復多次構成。

輸入: s = "abab"
輸出: true
解釋: 可由子串 "ab" 重復兩次構成。輸入: s = "aba"
輸出: false輸入: s = "abcabcabcabc"
輸出: true
解釋: 可由子串 "abc" 重復四次構成。 (或子串 "abcabc" 重復兩次構成。)

解題思路我們重復的拼接,然后截取字符串長度看是否包含自身字符串。

class Solution {public boolean repeatedSubstringPattern(String s) {String str = s + s;return str.substring(1, str.length() - 1).contains(s);}
}

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

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

相關文章

怎樣查詢到pycharm終端中執行過的命令?

pycharm終端中記錄了曾經運行過的命令&#xff0c;怎樣才能查詢到全部曾經運行過的命令呢&#xff1f; 怎樣查詢到pycharm終端中執行過的命令&#xff1f;

【動態規劃專欄】

動態規劃基礎知識 概念 動態規劃&#xff08;Dynamic Programming&#xff0c;DP&#xff09;&#xff1a;用來解決最優化問題的算法思想。 動態規劃是分治思想的延伸&#xff0c;通俗一點來說就是大事化小&#xff0c;小事化無的藝術。 一般來說&#xff0c;…

【CSS】初學輕松學會使用Flex布局

目錄 什么是Flex布局如何開始使用Flex布局Flex容器的屬性Flex項目的屬性舉個例子 什么是Flex布局 Flex布局是一種基于盒子模型的布局方式&#xff0c;它讓我們可以輕松地控制容器內的元素在主軸和交叉軸上的排列方式。通過設置不同的Flex屬性&#xff0c;我們可以實現各種不同…

探索Hadoop的三種運行模式:單機模式、偽分布式模式和完全分布式模式

目錄 前言一、 單機模式二、 偽分布式模式三、 完全分布式模式&#xff08;重點&#xff09;3.1 準備工作3.2 配置集群3.2.1 配置core-site.xml 文件3.2.2 配置hdfs-site.xml 文件3.2.3 配置yarn-site.xml 文件3.2.4 配置mapred-site.xml 文件 3.3 啟動集群3.3.1 配置workers3.…

【百度】商業AIGC組_AIGC Java研發工程師(J70353)

北京市技術4人2024-02-28 工作職責&#xff1a; 負責商業AIGC平臺方向的工程架構設計及研發&#xff0c;致力于為廣告業務提供內容生成、內容知識化、內容多模態等中臺化服務&#xff0c;并將內容能力打通廣告檢索系統&#xff0c;于廣告的觸發、創意、模型和機制等聯動&#…

RK3568 android11 調試陀螺儀模塊 MPU6500

一&#xff0c;MPU6500功能介紹 1.簡介 MPU6500是一款由TDK生產的運動/慣性傳感器&#xff0c;屬于慣性測量設備&#xff08;IMU&#xff09;的一種。MPU6500集成了3軸加速度計、3軸陀螺儀和一個板載數字運動處理器&#xff08;DMP&#xff09;&#xff0c;能夠提供6軸的運動…

Matlab|基于Logistic函數負荷需求響應

目錄 1 基于Logistic函數的負荷轉移率模型 2 程序示例 3 效果圖 4 下載鏈接 負荷需求響應模型種類較多&#xff0c;有電價型和激勵型等類型&#xff0c;本次和大家分享一個基于Logistic函數的負荷轉移率模型&#xff0c;該模型屬于電價型&#xff0c;由于該方法使用的較少&a…

mysql 性能調優參數配置文件

########################################################################### ## my.cnf for MySQL 8.0.x # ## 本配置參考 https://imysql.com/my-cnf-wizard.html # ## 注意&#xff1a; …

python爬蟲之app爬取-charles的使用

專欄系列:http://t.csdnimg.cn/WfCSx 前言 前面介紹的都是爬取 Web 網頁的內容。隨著移動互聯網的發展,越來越多的企業并沒有提供 Web 網頁端的服務,而是直接開發了 App,更多更全的信息都是通過 App 來展示的。那么針對 App 我們可以爬取嗎?當然可以。 App 的爬取相比 …

FM AM WM DAB是啥

技術描述頻率范圍優點缺點調頻調制&#xff08;FM&#xff09;在FM廣播中&#xff0c;音頻信號的頻率被調制以匹配載波信號的變化&#xff0c;而載波信號的振幅保持不變。FM廣播通常具有較高的音質&#xff0c;并且在一定范圍內提供清晰的音頻。88 MHz 至 108 MHz- 高音質 - 清…

[linux] matplotlib plt畫training dynamics指標曲線時,標記每個點的值

plt畫折線圖時&#xff0c;plt.annotate標記折線圖的點的數值。 def plot_ret(*ret_dicts):plt.figure(figsize(10, 5))for ret_dict in ret_dicts:print(ret_dict["iters"])plt.plot([iter*4/1000 for iter in ret_dict["iters"]], ret_dict["ret&q…

億道信息發布兩款升級款全加固筆記本電腦

2022年5月19日&#xff0c;加固手持終端。加固平板電腦、加固筆記本電腦專業設計商和制造商&#xff0c;以及加固型移動計算機軟硬件整體定制解決方案提供商億道信息&#xff0c;宣布對其兩款廣受歡迎的加固筆記本電腦產品EM-X14U和EM-X15U進行重大升級。新發布的兩款升級款全加…

下載element-ui 資源,圖標 element-icons.woff,element-icons.ttf 無法解碼文件字體

css下載地址&#xff1a;https://unpkg.com/element-ui2.15.14/lib/theme-chalk/index.css js下載地址&#xff1a;https://unpkg.com/element-ui2.15.14/lib/index.js 圖標及文字文件下載地址&#xff1a; element-icons.woff:&#xff1a; ? https://unpkg.com/element-…

《TCP/IP詳解 卷一》第10章 UDP 和 IP 分片

目錄 10.1 引言 10.2 UDP 頭部 10.3 UDP校驗和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子&#xff1a;IPV4 UDP分片 10.7.2 重組超時 10.8 采用UDP的路徑MTU發現 10.9 IP分片和ARP/ND之間的交互 10.10 最大UDP數據報長度 10.11 UDP服務器…

【java、微服務、nacos】nacos學習筆記

Nacos服務分級存儲模型 ① 一級是服務&#xff0c;例如userservice ②二級是集群&#xff0c;例如杭州或上海 ③ 三級是實例&#xff0c;例如杭州機房的某臺部署了userservice的服務器 配置實例集群屬性 改變服務的yml文件 spring:cloud:nacos:discovery:cluster-name: H…

Docker將本地的鏡像上傳到私有倉庫

使用register鏡像創建私有倉庫 [rootopenEuler-node1 ~]# docker run --restartalways -d -p 5000:5000 -v /opt/data/regostry:/var/lib/registry registry:2[rootopenEuler-node1 ~]# docker images REPOSITORY TAG IMAGE…

Day 60 | 動態規劃 647. 回文子串 、 516.最長回文子序列 、動態規劃總結篇

647. 回文子串 題目 文章講解 視頻講解 class Solution {public int countSubstrings(String s) {char[] chars s.toCharArray();int len chars.length;boolean[][] dp new boolean[len][len];int result 0;for (int i len - 1; i > 0; i--) {for (int j i; j < l…

基于React低代碼平臺開發:構建高效、靈活的應用新范式

文章目錄 一、React與低代碼平臺的結合優勢二、基于React的低代碼平臺開發挑戰三、基于React的低代碼平臺開發實踐四、未來展望《低代碼平臺開發實踐&#xff1a;基于React》編輯推薦內容簡介作者簡介目錄前言為什么要寫這本書 讀者對象如何閱讀本書 隨著數字化轉型的深入&…

library cache lock/pin

【故障現象】 某些session執行操作被堵塞&#xff0c;檢查event發現’library cache lock/pin’等待&#xff1b; 【可能故障原因】 library cache lock/pin發生在多個session對相同library cache對象進行爭用發生&#xff0c;一般來說在存儲過程編譯過程中發生并堵塞編譯。 …

SOA與微服務的區別

SOA&#xff08;面向服務的架構&#xff09;和微服務是兩種不同的架構風格&#xff0c;它們有一些相似之處&#xff0c;但也存在一些區別。 1. 規模和粒度&#xff1a;SOA是一種面向企業級應用的架構風格&#xff0c;它關注的是將整個企業的功能劃分為一組自治的服務。這些服務…