- 📢前言
- 🌲原題樣例:反轉字串
- 🌻C#方法:雙指標
- 🌻Java 方法:雙指標
- 💬總結

📢前言
| 🚀 演算法題 🚀 |
- 🌲 每天打卡一道演算法題,既是一個學習程序,又是一個分享的程序😜
- 🌲 提示:本專欄解題 編程語言一律使用 C# 和 Java 兩種進行解題
- 🌲 要保持一個每天都在學習的狀態,讓我們一起努力成為演算法大神吧🧐!
- 🌲 今天是力扣演算法題持續打卡第66天🎈!
| 🚀 演算法題 🚀 |
🌲原題樣例:反轉字串
撰寫一個函式,其作用是將輸入的字串反轉過來,輸入字串以字符陣列 s 的形式給出,
不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列、使用 O(1) 的額外空間解決這一問題,
示例1:
輸入:s = ["h","e","l","l","o"]
輸出:["o","l","l","e","h"]
示例2:
輸入:s = ["H","a","n","n","a","h"]
輸出:["h","a","n","n","a","H"]
提示:
- 1 <= s.length <= 105
- s[i] 都是 ASCII 碼表中的可列印字符
🌻C#方法:雙指標
首尾指標一同向中間移動,交換元素
代碼:
public class Solution {
public void ReverseString(char[] s) {
char head;
char tail;
for(int i=0;i<s.Length/2;i++)
{
head=s[i];
tail=s[s.Length-1-i];
s[s.Length-1-i]=head;
s[i]=tail;
}
}
}
執行結果
通過
執行用時:88 ms,在所有 Java 提交中擊敗了22.50%的用戶
記憶體消耗:36.4 MB,在所有 Java 提交中擊敗了12.50%的用戶
🌻Java 方法:雙指標
思路決議

代碼:
class Solution {
public void reverseString(char[] s) {
int n = s.length;
for (int left = 0, right = n - 1; left < right; ++left, --right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
}
}
}
執行結果
通過
執行用時:1 ms,在所有 Java 提交中擊敗了90.26%的用戶
記憶體消耗:45.2 MB,在所有 Java 提交中擊敗了8.05%的用戶
復雜度分析
時間復雜度:O( n )
空間復雜度:O( 1 ) ,其中 Σ 是字串的字符集,哈希表存盤字符的空間取決于字串的字符集大小,最壞情況下每個字符均不相同,需要O(∣Σ∣) 的空間,
💬總結
- 今天是力扣演算法題打卡的第六十六天!
- 文章采用
C#和Java兩種編程語言進行解題 - 一些方法也是參考力扣大神寫的,也是邊學習邊分享,再次感謝演算法大佬們
- 那今天的演算法題分享到此結束啦,明天再見!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342039.html
標籤:其他
下一篇:順序表的實作以及力扣練習題
