
文章目錄
- ?? 前言 ??
- 🙀 作者簡介 🙀
- 💗 一、題目描述 💗
- 💁 二、題目決議 💁
- 🏃 三、代碼 🏃
- ?? 1??. python ??
- ?? 2??. C# ??
- 🌔 結語 🌔
?? 前言 ??
演算法作為極其重要的一點,是大學生畢業找作業的核心競爭力,所以為了不落后與人,開始刷力扣演算法題!
第一遍,不求最優解,但求能過!!!
🙀 作者簡介 🙀
大家好,我是布小禪,一個盡力讓無情的代碼變得生動有趣的IT小白,很高興能偶認識你,關注我,每天堅持學點東西,我們以后就是大佬啦!
📢 博客主頁:?布小禪?
📢 作者專欄:
?Python?
?Java??力扣題?
這是我刷第 26/100 道力扣簡單題
💗 一、題目描述 💗
題目描述
給定一個字串 s 和一個整數 k,從字串開頭算起,每 2k 個字符反轉前 k 個字符,
如果剩余字符少于 k 個,則將剩余字符全部反轉,
如果剩余字符小于 2k 但大于或等于 k 個,則反轉前 k 個字符,其余字符保持原樣,
示例 1:
輸入:s = “abcdefg”, k = 2
輸出:“bacdfeg”
示例 2:
輸入:s = “abcd”, k = 2
輸出:"bacd"
\color{red}{}
提示:
1 <= s.length <= 104
s 僅由小寫英文組成
1 <= k <= 104
\color{red}{}
💁 二、題目決議 💁
- 將有重合部分的合并
- 也就是兩個小的合并大的
- 將陣列按升序排列
- 遍歷一遍陣列
- 如當前陣列的第二個元素小于下一陣列的第一個元素
- 就將這個陣列加到ans里面
- 如果大于等于
- 將當前陣列的第二個元素賦值給下一陣列的第一個元素,將其合并
- 遍歷完再將二維陣列中的最后一個元素加入動態陣列
- 因為相對于整個陣列而言少回圈了一次,但是該有的操作都有
🏃 三、代碼 🏃
?? 1??. python ??
class Solution:
def reverseStr(self, s: str, k: int) -> str:
arr = list(s) # 先將字串轉為字符型陣列
len1 = len(s)
if len1 == 0: return "" # 判斷特殊情況的字串
if len1 == 1: return s
fast = k # 后指標
i = 0 # 前指標
while i < len1: # 遍歷
if len1 - i >= k * 2: # 判斷
j = i
while j < fast: # 翻轉字串
tep = arr[j]
arr[j] = arr[fast - 1]
arr[fast - 1] = tep
fast -= 1
j += 1
i += k * 2
fast = i + k
elif k * 2 > len1 - i >= k:
j = i
while j < fast:
tep = arr[j]
arr[j] = arr[fast - 1]
arr[fast - 1] = tep
fast -= 1
j += 1
return ''.join(arr)
else:
fast = len1
j = i
while j < fast:
tep = arr[j]
arr[j] = arr[fast - 1]
arr[fast - 1] = tep
fast -= 1
j += 1
return ''.join(arr)
return ''.join(arr)
?? 2??. C# ??
public class Solution {
public string ReverseStr(string s, int k) {
char[] arr = s.ToCharArray(); //先將字串轉為字符型陣列
int len = arr.Length;
if(len==0) return ""; // 判斷特殊情況的字串
if(len==1) return s;
int fast = k; // 后指標
int num = k*2;
int i=0; // 前指標
while (i<len){ // 遍歷
if(len-i>=num){ // 判斷
int j=i;
while(j<fast){ // 翻轉字串
char tep = arr[j];
arr[j] = arr[fast-1];
arr[fast-1] = tep;
fast--;
j++;
}
i += k*2;
fast = i+k;
}else if(len-i<num&&len-i>=k){
int j=i;
while(j<fast){
char tep = arr[j];
arr[j] = arr[fast-1];
arr[fast-1] = tep;
fast--;
j++;
}
return String.Join("", arr);
}else{
fast=len;
int j=i;
while(j<fast){
char tep = arr[j];
arr[j] = arr[fast-1];
arr[fast-1] = tep;
fast--;
j++;
}
return String.Join("", arr);
}
}
return String.Join("", arr);
}
}
🌔 結語 🌔
堅持最重要,每日一題必不可少!😸
期待你的關注和督促!😛

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295654.html
標籤:python
