算法记录Day 8 | 字符串part01
LeetCode 344-反转字符串
题目链接:leetcode.cn/problems/re…
题解
class Solution {
public:
void reverseString(vector<char> &s) {
int size = s.size();
if (size < 2) {
return;
}
int l = 0;
int r = size - 1;
while (l < r) {
char temp = s[l];
s[l] = s[r];
s[r] = temp;
l++;
r--;
}
}
};
LeetCode 541-反转字符串II
题目链接:leetcode.cn/problems/re…
题解
class Solution {
public:
string reverseStr(string s, int k) {
vector<char> c;
for (auto e : s) {
c.push_back(e);
}
int cnt = 2 * k;
for (int i = 0; i < c.size();) {
if (c.size() >= i + k) {
reverse(c, i, i + k - 1);
} else {
reverse(c, i, c.size() - 1);
}
i = i + cnt;
}
string str(c.begin(), c.end());
return str;
}
void reverse(vector<char> &c, int start, int end) {
while (start < end) {
char temp = c[start];
c[start] = c[end];
c[end] = temp;
start++;
end--;
}
}
};
151-翻转字符串里的单词
题目链接:leetcode.cn/problems/re…
题解
import "strings"
func reverseWords(s string) string {
s = strings.TrimSpace(s)
b: = [] byte(s)
i, j: = len(b) - 1, len(b) - 1
reverse: = make([] string, 0)
for i >= 0 {
for i >= 0 && b[i] != ' ' {
i--
}
reverse = append(reverse, string(b[i + 1: j + 1]))
for i >= 0 && b[i] == ' ' {
i--
}
j = i
}
res: = strings.Join(reverse, " ")
return res
}