当前位置:网站首页>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;
}
};
边栏推荐
- Mysql怎样控制replace替换的次数?
- 杭电oj2092 整数解
- requires php ~7.1 -&gt; your PHP version (7.0.18) does not satisfy that requirement
- gvim【三】【_vimrc配置】
- 搜索框效果的实现【每日一题】
- Cesium knows the longitude and latitude of one point and the distance to find the longitude and latitude of another point
- 杭电oj2054 A == B ? ???
- How can the PC page call QQ for online chat?
- 【立体匹配论文阅读】【三】INTS
- Laravel form builder uses
猜你喜欢
LeetCode每日一题(636. Exclusive Time of Functions)
带你掌握三层架构(建议收藏)
Take you to master the three-tier architecture (recommended Collection)
最长上升子序列模型 AcWing 1014. 登山
The longest ascending subsequence model acwing 1014 Mountaineering
Selenium库
Excerpt from "misogyny: female disgust in Japan"
Assign a dynamic value to the background color of DataGrid through ivalueconverter
[Reading stereo matching papers] [III] ints
JS get the current time, month, day, year, and the uniapp location applet opens the map to select the location
随机推荐
XML文件的解析操作
交换机和路由器的异同
用例图
Horizontal of libsgm_ path_ Interpretation of aggregation program
CSMA/CD 载波监听多点接入/碰撞检测协议
请问,如图,pyhon云函数提示使用了 pymysql模块,这个是怎么回事?
最长上升子序列模型 AcWing 1012. 友好城市
手里的闲钱是炒股票还是买理财产品好?
Take you to master the three-tier architecture (recommended Collection)
常用数字信号编码之反向不归零码码、曼彻斯特编码、差分曼彻斯特编码
AutoCAD - how to input angle dimensions and CAD diameter symbols greater than 180 degrees?
MRS离线数据分析:通过Flink作业处理OBS数据
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
Lavarel之环境配置 .env
Environment configuration of lavarel env
Transferring files between VMware and host
Mysql怎样控制replace替换的次数?
IP and long integer interchange
When FC connects to the database, do you have to use a custom domain name to access it outside?
The difference between memory overflow and memory leak