当前位置:网站首页>Leetcode——344. Reverse string /541 Invert string ii/151 Reverse the word / Sword finger in the string offer 58 - ii Rotate string left
Leetcode——344. Reverse string /541 Invert string ii/151 Reverse the word / Sword finger in the string offer 58 - ii Rotate string left
2022-07-07 14:19:00 【styfish】
summary
The finger of the sword Offer 58 - II. Left rotation string
- These questions are all related to string flipping
analysis
344
The title requires modification in place , Consider using double pointers +swap() Function implementation
actually , Built in functions reverse() It is through this ;
541
- This question , We make use of
reverse()
Just simulate the operation
151
- Personally, I think this is a skill problem , Be able to think of using the idea of multiple reversals
- First flip the entire string
- Then flip each word once , To achieve the final effect
There is a difficulty here , How to determine a word for the second flip
** The finger of the sword Offer 58 **
- This question , Personally, I think it is also a skill problem , and 151 equally , Use the idea of multiple flips
Ideas
151
How to determine a word in the second flip ?
- It is easy for us to think of using spaces to distinguish words , But according to the title : There are leading spaces 、 Trailing spaces and multiple spaces between words , So we still need to deal with it carefully
- First of all, after the first flip , Three special blank spaces in the title still exist , We can deal with it according to the situation :
- For leading spaces and multiple spaces between words , We can determine one letter at a time , Then look for the word of the letter
- And it is usually the use of spaces to distinguish words . But considering that there may be no space at the end , You can't distinguish the last word , So for unified operation , We can manually add a space at the end
Code
344
class Solution {
public:
void reverseString(vector<char>& s) {
int left = 0, right = s.size() - 1; // Double pointer
while (left < right) {
swap(s[left++], s[right--]); // STL swap()
}
}
};
541
class Solution {
public:
string reverseStr(string s, int k) {
for (int i = 0; i < s.size();i += (2 * k)) {
// Simulation operation
if (i + k <= s.size()) {
reverse(s.begin() + i, s.begin() + i + k );
continue;
}
reverse(s.begin() + i, s.begin() + s.size());
}
return s;
}
};
151
class Solution {
public:
string reverseWords(string s) {
reverse(s.begin(), s.end()); // First flip all characters
s.push_back(' '); // Unified operation , Add a space at the end
for(int i = 0; i < s.size(); ++i) {
if (s[i] != ' ') {
// Until the first letter appears , It can handle leading spaces and multiple spaces between words
int j = i + 1;
for (; j < s.size(); ++j) {
if (s[j] == ' ') {
// Encountered a space , You can determine the index of the front and back positions of the word
reverse(s.begin() + i, s.begin() + j); // Turn over a single word
i = j; // To continue processing
break;
}
}
}
}
// Remove extra space . Using two finger acupuncture , Move forward
int i = 0, j = 0;
for(;j < s.size(); ++j) {
if (s[j] != ' ')
s[i++] = s[j];
else if(s[j] == ' ' && i > 0 && s[i - 1] != ' ')
s[i++] = ' ';
}
s.resize(i - 1); // narrow string, Leave something useful
return s;
}
};
Tips :
Direct use of
resize()
To delete the memory at the end
The finger of the sword Offer 58
class Solution {
public:
string reverseLeftWords(string s, int n) {
reverse(s.begin(), s.end()); // Flip the whole string for the first time
int size = s.size();
// The next two flips are to restore the normal order , If you don't understand, you can simulate it manually
reverse(s.begin(), s.begin() + size - n);
reverse(s.begin() + size - n, s.end());
return s;
}
};
边栏推荐
猜你喜欢
UML sequence diagram (sequence diagram)
The longest ascending subsequence model acwing 1012 Sister cities
Reverse non return to zero code, Manchester code and differential Manchester code of common digital signal coding
Assign a dynamic value to the background color of DataGrid through ivalueconverter
Did login metamask
AI talent cultivation new ideas, this live broadcast has what you care about
Use day JS let time (displayed as minutes, hours, days, months, and so on)
Introduction to sakt method
Flask session forged hctf admin
Use case diagram
随机推荐
The longest ascending subsequence model acwing 1014 Mountaineering
Regular expression integer positive integer some basic expressions
Flask session forged hctf admin
交换机和路由器的异同
Excuse me, I have three partitions in Kafka, and the flinksql task has written the join operation. How can I give the join operation alone
手里的闲钱是炒股票还是买理财产品好?
Es log error appreciation -limit of total fields
OAuth 2.0 + JWT 保护API安全
Leetcode——236. The nearest common ancestor of binary tree
[untitled]
Search engine interface
Mrs offline data analysis: process OBS data through Flink job
Seven propagation behaviors of transactions
通过 iValueConverter 给datagrid 的背景颜色 动态赋值
Transferring files between VMware and host
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
常用数字信号编码之反向不归零码码、曼彻斯特编码、差分曼彻斯特编码
Leetcode——236. 二叉树的最近公共祖先
Cesium 已知一点经纬度和距离求另一个点的经纬度
Vscode configuration uses pylint syntax checker