当前位置:网站首页>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;
}
};
边栏推荐
- Attribute keywords aliases, calculated, cardinality, ClientName
- Details of redis core data structure & new features of redis 6
- 最长上升子序列模型 AcWing 1012. 友好城市
- IP address home location query full version
- wpf dataGrid 实现单行某个数据变化 ui 界面随之响应
- UML state diagram
- 参数关键字Final,Flags,Internal,映射关键字Internal
- IP and long integer interchange
- JS get the current time, month, day, year, and the uniapp location applet opens the map to select the location
- 最长上升子序列模型 AcWing 482. 合唱队形
猜你喜欢

The longest ascending subsequence model acwing 482 Chorus formation

gvim【三】【_vimrc配置】

The longest ascending subsequence model acwing 1012 Sister cities

设备故障预测机床故障提前预警机械设备振动监测机床故障预警CNC震动无线监控设备异常提前预警

Reverse non return to zero code, Manchester code and differential Manchester code of common digital signal coding

Parsing of XML files

Horizontal of libsgm_ path_ Interpretation of aggregation program

libSGM的horizontal_path_aggregation程序解读

UML sequence diagram (sequence diagram)

Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
随机推荐
UML 状态图
Use case diagram
最长上升子序列模型 AcWing 1012. 友好城市
GAN发明者Ian Goodfellow正式加入DeepMind,任Research Scientist
Csma/cd carrier monitoring multipoint access / collision detection protocol
Mysql怎样控制replace替换的次数?
Docker deploy Oracle
杭电oj2054 A == B ? ???
Transferring files between VMware and host
Regular expression integer positive integer some basic expressions
Leetcode——236. The nearest common ancestor of binary tree
Excuse me, why is it that there are no consumption messages in redis and they are all piled up in redis? Cerely is used.
Similarities and differences between switches and routers
Equipment failure prediction machine failure early warning mechanical equipment vibration monitoring machine failure early warning CNC vibration wireless monitoring equipment abnormal early warning
Excuse me, does PTS have a good plan for database pressure measurement?
【网络安全】sql注入语法汇总
The difference between memory overflow and memory leak
[untitled]
648. Word replacement: the classic application of dictionary tree
OAuth 2.0 + JWT 保护API安全