当前位置:网站首页>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;
}
};
边栏推荐
- Is it safe to open an account online now? Which securities company should I choose to open an account online?
- oracle 触发器实现级联更新
- Similarities and differences between switches and routers
- Leetcode——236. The nearest common ancestor of binary tree
- 多商户商城系统功能拆解01讲-产品架构
- Csma/cd carrier monitoring multipoint access / collision detection protocol
- IP address home location query full version
- Excusez - moi, l'exécution a été réussie lors de l'utilisation des données de puits SQL Flink à Kafka, mais il n'y a pas de nombre dans Kafka
- 手里的闲钱是炒股票还是买理财产品好?
- The difference between memory overflow and memory leak
猜你喜欢

Codes de non - retour à zéro inversés, codes Manchester et codes Manchester différentiels couramment utilisés pour le codage des signaux numériques

JS get the current time, month, day, year, and the uniapp location applet opens the map to select the location

Introduction to sakt method

手把手教会:XML建模

Parsing of XML files

Wired network IP address of VMware shared host
![Verilog implementation of a simple legv8 processor [4] [explanation of basic knowledge and module design of single cycle implementation]](/img/d3/20674983717d829489149b4d3bfedf.png)
Verilog implementation of a simple legv8 processor [4] [explanation of basic knowledge and module design of single cycle implementation]

Vmware共享主机的有线网络IP地址

libSGM的horizontal_path_aggregation程序解读

AutoCAD - how to input angle dimensions and CAD diameter symbols greater than 180 degrees?
随机推荐
Common response status codes
Mrs offline data analysis: process OBS data through Flink job
Laravel form builder uses
Take you to master the three-tier architecture (recommended Collection)
Realization of search box effect [daily question]
Laravel5 call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败
[high frequency interview questions] difficulty 2.5/5, simple combination of DFS trie template level application questions
课设之百万数据文档存取
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
Hands on Teaching: XML modeling
c#利用 TCP 协议建立连接
648. Word replacement: the classic application of dictionary tree
Is the spare money in your hand better to fry stocks or buy financial products?
UML 顺序图(时序图)
Search engine interface
CSMA/CD 载波监听多点接入/碰撞检测协议
PC端页面如何调用QQ进行在线聊天?
Selenium库
How can the PC page call QQ for online chat?
OAuth 2.0 + JWT protect API security