344. 反轉字串
題目連結:https://leetcode.cn/problems/reverse-string/
題目難度:簡單
文章講解:https://programmercarl.com/0344.反轉字串.html
影片講解: https://www.bilibili.com/video/BV1fV4y17748
題目狀態:過!
個人思路:
就是使用雙指標,在right > left
的前提下將字串遍歷,並把right
和left
的值相互交換。
實現程式碼:
class Solution {
public:
void reverseString(vector<char>& s) {
int left = 0;
int right = s.size() - 1;
while(right > left) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
left++;
right--;
}
}
};
541. 反轉字串 II
題目連結:https://leetcode.cn/problems/reverse-string-ii/
題目難度:簡單
文章講解:https://programmercarl.com/0541.反轉字串II.html
影片講解: https://www.bilibili.com/video/BV1dT411j7NN
題目狀態:過!!
個人思路:
看了半天的題目才看懂講的什麼意思,就是把字串從前往後分為好幾組,每組有k
個元素,並把第1組、第3組、第5組……進行反轉,而把第2組、第4組、第6組……保持不變。而剩下的元素如果沒有k
個元素,且處於奇陣列中,將剩下的元素進行反轉。看圖示:
實現程式碼:
class Solution {
public:
string reverseStr(string s, int k) {
if(s.size() <= k) {
reverse(s.begin(), s.end());
return s;
}
int i = 1;
while(k * i < s.size()) {
reverse(s.begin() + k * (i - 1), s.begin() + k * i);
i = i + 2;
}
reverse(s.begin() + k * (i - 1), s.end());
return s;
}
};
54. 替換數字(卡碼網)
題目連結:https://kamacoder.com/problempage.php?pid=1064
文章講解:https://programmercarl.com/kama54.替換數字.html
題目狀態:過!!!
個人思路:
拿空間換時間,直接建立一個空字串res
,判斷輸入的字串元素是否為數字。若為數字,在res
後面接上一個number
,若不是數字,則在res
後面接入該元素。
程式碼實現:
#include <iostream>
#include <string>
using namespace std;
using std::string;
class Solution {
public:
string replaceNum(string s) {
string res;
for(auto &sCh : s) {
if(!isdigit(sCh)) {
res += sCh;
} else {
res += "number";
}
}
return res;
}
};
int main(void) {
string s;
cin >> s;
Solution sol;
cout << sol.replaceNum(s);
}
第一次在卡碼網上刷題,和力扣感覺不太一樣。