23
文章講解
力扣地址
C++
class Solution {
public:void reverseString(vector<char>& s) {int left = 0;int right = s.size() - 1; // right 應該初始化為 s.size() - 1while (left < right) {swap(s[left], s[right]); // 直接交換 s[left] 和 s[right] 的值left++;right--;}}
};
Python
class Solution(object):def reverseString(self, s):""":type s: List[str]:rtype: None Do not return anything, modify s in-place instead."""left=0n = len(s)-1right=nwhile(left<right):s[left], s[right] = s[right], s[left]left+=1right-=1
24
文章講解
力扣地址
class Solution {
public:string reverseStr(string s, int k) {int n = s.size();for (int i = 0; i < n; i += 2*k) {//每次處理2k個字符int left = i;int right = min(i + k - 1, n - 1);while (left < right) {swap(s[left], s[right]);left++;right--; // 更新 left 和 right 的值}}return s;}
};
class Solution(object):def reverseStr(self, s, k):""":type s: str:type k: int:rtype: str"""s1=list(s)left=0right=0n = len(s1)for i in range(0,n,2*k):left = iright=min(i+k-1,n-1)while left<right:s1[left],s1[right]=s1[right],s1[left]left+=1right-=1return "".join(s1)
25:
文章講解
題目地址
#include <iostream>
#include <string>
using namespace std;int main()
{string s;while(getline(cin, s)){string result = ""; // 用于存儲替換后的字符串for(int i = 0; i < s.length(); i++){if(isdigit(s[i])){ // 判斷字符是否為數字result += "number";} else {result += s[i];}}cout << result << endl;}return 0;
}
判斷是不是數字 isdigit(s[i)
while True:try:s = input()s1 = list(s)for i in range(len(s1)):if s1[i]>='0' and s1[i]<='9':s1[i]="number"print(''.join(s1))except:break
這里注意 ’ '.join(s1)
26
文章講解
題目地址
先翻轉字符串再翻轉每個單詞
然后刪除多余空格
reverse(s.begin(),s.end());
if(s[start]!=’ ‘)如果不是空格,說明新單詞開始
if(idx!=0) s[idx++]=’ ’ 如果新單詞不是第一個單詞,加入前單詞末尾空格
int end = start;
while(wend<n && s[end]!=‘’)
s[idx++]=s[end++]
通過一個while循環,找到完整的單詞
reverse(s.begin()+idx-(end-start),s.begin()=idx);翻轉單詞
class Solution {
public:string reverseWords(string s) {// 反轉整個字符串reverse(s.begin(), s.end());int n = s.size();int idx = 0;for (int start = 0; start < n; ++start) {if (s[start] != ' ') {// 填一個空白字符然后將idx移動到下一個單詞的開頭位置if (idx != 0) s[idx++] = ' ';// 循環遍歷至單詞的末尾int end = start;while (end < n && s[end] != ' ') s[idx++] = s[end++];// 反轉整個單詞reverse(s.begin() + idx - (end - start), s.begin() + idx);// 更新start,去找下一個單詞start = end;}}s.erase(s.begin() + idx, s.end());return s;}
};
class Solution(object):def reverseWords(self, s):""":type s: str:rtype: str"""words = s.split()words = words[::-1]result = ' '.join(words)return result