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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode.917-只反转字母(Reverse Only Letters)

發(fā)布時間:2025/4/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode.917-只反转字母(Reverse Only Letters) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這是悅樂書的第353次更新,第378篇原創(chuàng)

01 看題和準(zhǔn)備

今天介紹的是LeetCode算法題中Easy級別的第215題(順位題號是917)。給定一個字符串S,返回“反向”字符串,其中所有非字母的字符都保留在同一位置,并且所有字母都反轉(zhuǎn)其位置。例如:

輸入:“ab-cd”
輸出:“dc-ba”

輸入:“a-bC-dEf-ghIj”
輸出:“j-Ih-gfE-dCba”

輸入:“Test1ng-Leet = code-Q!”
輸出:“Qedo1ct-eeLg = ntse-T!”

注意

  • S.length <= 100

  • 33 <= S[i].ASCIIcode <= 122

  • S不包含\或“

02 第一種解法

使用雙指針

定義兩個指針i和j,一個從前往后,一個從后往前,只有兩個指針?biāo)谠囟际亲帜笗r才交換位置,如果其中一個不是字母,就向前前進一步繼續(xù)判斷,如果兩個指針?biāo)谠囟疾皇亲帜妇屯瑫r向前移動。

此解法的時間復(fù)雜度是O(N),空間復(fù)雜度是O(N)。

public String reverseOnlyLetters(String S) {int i = 0, j = S.length()-1;char[] arr = S.toCharArray();while (i < j) {char c = arr[i];char c2 = arr[j];if (Character.isLetter(c) && Character.isLetter(c2)) {arr[i] = c2;arr[j] = c;i++;j--;} else if (!Character.isLetter(c) && Character.isLetter(c2)) {i++;} else if (Character.isLetter(c) && !Character.isLetter(c2)) {j--;} else if (!Character.isLetter(c) && !Character.isLetter(c2)) {i++;j--;}}return new String(arr); }


03 第二種解法

在雙指針的基礎(chǔ)上做了下變動,使用StringBuilder來拼接新的字符,但是雙指針的思路沒變。

此解法的時間復(fù)雜度是O(N),空間復(fù)雜度是O(N)。

public String reverseOnlyLetters2(String S) {int j = S.length()-1, n = S.length();StringBuilder sb = new StringBuilder();for (int i=0; i<n; i++) {if (Character.isLetter(S.charAt(i))) {while (j>=0 && !Character.isLetter(S.charAt(j))) {j--;}sb.append(S.charAt(j--));} else {sb.append(S.charAt(i));}}return sb.toString(); }


04 第三種解法

利用棧,借助其先進后出的特性。

先將S中的字母全部入棧,然后再遍歷S中的字符,如果是字母,就從棧頂取一位元素出來拼接,不是字母,就直接拼接當(dāng)前元素。

此解法的時間復(fù)雜度是O(N),空間復(fù)雜度是O(N)。

public String reverseOnlyLetters3(String S) {Stack<Character> stack = new Stack<Character>();char[] arr = S.toCharArray();for (char c : arr) {if (Character.isLetter(c)) {stack.push(c);}}StringBuilder sb = new StringBuilder();for (char c : arr) {if (Character.isLetter(c)) {sb.append(stack.pop());} else {sb.append(c);}}return sb.toString(); }


05 小結(jié)

算法專題目前已連續(xù)日更超過六個月,算法題文章221+篇,公眾號對話框回復(fù)【數(shù)據(jù)結(jié)構(gòu)與算法】、【算法】、【數(shù)據(jù)結(jié)構(gòu)】中的任一關(guān)鍵詞,獲取系列文章合集。

以上就是全部內(nèi)容,如果大家有什么好的解法思路、建議或者其他問題,可以下方留言交流,點贊、留言、轉(zhuǎn)發(fā)就是對我最大的回報和支持!

轉(zhuǎn)載于:https://www.cnblogs.com/xiaochuan94/p/11020782.html

總結(jié)

以上是生活随笔為你收集整理的LeetCode.917-只反转字母(Reverse Only Letters)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品婷婷午夜在线观看 | 国产福利第一页 | 久草视频免费在线观看 | 色综合天天网 | 91偷拍网| 91国产视频在线播放 | 欧美资源在线 | 极品久久久久 | 宅男在线视频 | 精品久久久久成人码免费动漫 | 国产美女福利在线 | 以女性视角写的高h爽文 | www.浪潮av.com| 黑鬼巨鞭白妞冒白浆 | 国产麻豆一区二区三区在线观看 | 国产精品一区二区三区四区视频 | 天天摸天天射 | 欧美黄色一级网站 | 美女撒尿无遮挡网站 | 男人午夜视频 | 亚洲无人区码一码二码三码的含义 | 中国二级毛片 | 9久久精品 | 成人av影院在线观看 | 日韩精选视频 | 欧美一区二区三区在线观看视频 | 久久久区 | 最新国产三级 | va欧美 | 黑丝av在线 | av网址免费观看 | 无码人妻丰满熟妇精品 | 久久高清av| 91精品久久久久久久久久入口 | 日本韩国在线观看 | 亚洲av无码久久精品色欲 | 精品一区二区三区三区 | 久伊人网| 欧美成人午夜 | 鲁一鲁色一色 | 国产区一二 | 日韩一级片中文字幕 | 国产欧美一区二区精品性色超碰 | 欧美在线另类 | 欧美大片一区二区 | 国产黄色片av | 一区二区三区伦理片 | 日韩爱爱片 | 久久精品综合 | 97小视频 | 无套内谢大学处破女www小说 | 精品xxxxx| 久久亚洲av午夜福利精品一区 | 特级黄色大片 | 日本免费一二区 | 成人乱人乱一区二区三区一级视频 | 九九九九热| 日韩午夜影院 | www国产com | 欧美在线www| 日韩精品在线免费观看 | 极品美女销魂一区二区三区 | 无码少妇精品一区二区免费动态 | 正在播放经典国语对白 | 69精品在线 | 亚洲精品大全 | 黄色片免费网站 | 亚洲一区二区高清视频 | 亚洲成年人av | 中文字幕亚洲一区二区三区五十路 | 丝袜 亚洲 另类 国产 制服 | 黄色特一级 | 亚洲网址在线观看 | 免费av观看网址 | 华丽的外出在线 | 可以看的av网址 | 亚洲欧美日韩一区二区三区四区 | 国产成人av无码精品 | 综合色爱 | jvid乐乐| 人人人射| 亚洲天堂精品一区 | 精品视频一区二区三区 | 四虎色网 | 不卡影院| 色婷婷国产精品综合在线观看 | 北岛玲在线 | 在线天堂网 | 精品无码国产一区二区三区av | 国产18av| 99在线小视频 | 日本欧美不卡 | 久久精品视频久久 | 人人玩人人弄 | 人人妻人人藻人人爽欧美一区 | 日本在线高清视频 | 毛片少妇 | 97国产精品久久 | 久久亚洲a v|