目录
-
14. 最长公共前缀
- 思路解析
-
151. 反转字符串中的单词
- 思路解析
- 思路解析
- 思路解析
- 思路解析
- 思路解析
14. 最长公共前缀
如果不存在公共前缀,返回空字符串 ""
。
输入:strs = ["flower","flow","flight"]
输出:"fl"
思路解析
string longestCommonPrefix(vector<string>& strs {
string res;
if (strs.empty( {
return res;
}
for (size_t i = 0; i < strs[0].length(; i++ {
char pivotChar = strs[0][i];
for (size_t j = 1; j < strs.size(; j++ {
if (i >= strs[j].length( || strs[j][i] != pivotChar {
return res;
}
}
res += pivotChar;
}
return res;
}
151. 反转字符串中的单词
给你一个字符串 s,请你反转字符串中 单词 的顺序。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
输入:s = "the sky is blue"
输出:"blue is sky the"
思路解析
string reverseWords(string s {
stack<string> strStack;
string oneWord;
for (size_t i = 0; i < s.length(; i++ {
if (s[i] == ' ' {
if (!oneWord.empty( {
strStack.emplace(oneWord;
}
oneWord.clear(;
continue;
}
oneWord += s[i];
}
if (!oneWord.empty( {
strStack.emplace(oneWord;
}
string resStr;
while (!strStack.empty( {
resStr += strStack.top( + " ";
strStack.pop(;
}
resStr = resStr.substr(0, resStr.length(-1;
return resStr;
}
graph LR;
ios-->ios_base;
istringstream-->istream;
istream-->ios;
ostream-->ios;
ostringstream-->ostream;
- istream:从流中读取
- ostream:写到流中去
- istringstream:从string对象流中读取
- ostringstream:写入到string对象流中
ostringstream:
Objects of this class use a string buffer that contains a sequence of characters. This sequence of characters can be accessed directly as a string object, using member str。
istringstream:
>> applied to an input stream is known as extraction operator. It is overloaded as a member function for:
>>,即为提取操作符,有三种接受方式:
arithmetic types【算术类型,bool、short、long等等】
- stream buffers
- manipulators
>>可以从流中提取数据,多个单词使用空格分割。
string reverseWords(string s {
istringstream is(s;
stack<string> strStack;
string str;
while (is >> str {
strStack.emplace(str;
}
string resStr;
while (!strStack.empty( {
resStr += strStack.top( + " ";
strStack.pop(;
}
resStr = resStr.substr(0, resStr.length( - 1;
return resStr;
}
125. 验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
给你一个字符串 s,如果它是 回文串,返回 true ;否则,返回 false 。
思路解析
bool isPalindrome(string s {
// 清理字符串
string cleanStr;
for (size_t i = 0; i < s.length(; i++ {
if (isalnum(s[i] {
cleanStr += tolower(s[i];
}
}
// 判断其是否为回文串
int i = 0;
int j = cleanStr.length( - 1;
while (i < j {
if (cleanStr[i++] != cleanStr[j--] {
return false;
}
}
return true;
}
C++中哪些字符串的判断与处理函数: