当前位置:网站首页>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;
}
};
边栏推荐
- Redis can only cache? Too out!
- The reason why data truncated for column 'xxx' at row 1 appears in the MySQL import file
- 搜索框效果的实现【每日一题】
- 杭电oj2092 整数解
- NDK beginner's study (1)
- 带你掌握三层架构(建议收藏)
- 一个简单LEGv8处理器的Verilog实现【四】【单周期实现基础知识及模块设计讲解】
- Laravel Form-builder使用
- Is it safe to open an account online now? Which securities company should I choose to open an account online?
- 請問,在使用flink sql sink數據到kafka的時候出現執行成功,但是kafka裏面沒有數
猜你喜欢
使用day.js让时间 (显示为几分钟前 几小时前 几天前 几个月前 )
常用數字信號編碼之反向不歸零碼碼、曼徹斯特編碼、差分曼徹斯特編碼
LeetCode 648. 单词替换
Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
Dry goods | summarize the linkage use of those vulnerability tools
Excerpt from "misogyny: female disgust in Japan"
Redis 核心数据结构 & Redis 6 新特性详
一个简单LEGv8处理器的Verilog实现【四】【单周期实现基础知识及模块设计讲解】
The longest ascending subsequence model acwing 1014 Mountaineering
docker部署oracle
随机推荐
参数关键字Final,Flags,Internal,映射关键字Internal
請問,在使用flink sql sink數據到kafka的時候出現執行成功,但是kafka裏面沒有數
交换机和路由器的异同
Vmware 与主机之间传输文件
带你掌握三层架构(建议收藏)
XML文件的解析操作
Cesium knows the longitude and latitude of one point and the distance to find the longitude and latitude of another point
NDK beginner's study (1)
The longest ascending subsequence model acwing 1014 Mountaineering
Flask session forged hctf admin
The longest ascending subsequence model acwing 1012 Sister cities
Excerpt from "misogyny: female disgust in Japan"
Selenium Library
ARM Cortex-A9,MCIMX6U7CVM08AD 处理器应用
Parameter keywords final, flags, internal, mapping keywords internal
Horizontal of libsgm_ path_ Interpretation of aggregation program
Assign a dynamic value to the background color of DataGrid through ivalueconverter
设备故障预测机床故障提前预警机械设备振动监测机床故障预警CNC震动无线监控设备异常提前预警
[Reading stereo matching papers] [III] ints
Use case diagram