C++ 分区字符串C++;
我需要找到一个包含两个嵌套for循环的字符串。我遇到了逻辑问题 一串“加州” 从两端检查索引->0;内部索引--){ if(stringValue[index]==stringValue[innerIndex]){ oreoString=oreoString+stringValue[索引]; } }//端内环 }//末端外环 不能包含 #包括 int main() { std::string input=“California”; int a=0,b=0;C++ 分区字符串C++;,c++,string,C++,String,我需要找到一个包含两个嵌套for循环的字符串。我遇到了逻辑问题 一串“加州” 从两端检查索引->0;内部索引--){ if(stringValue[index]==stringValue[innerIndex]){ oreoString=oreoString+stringValue[索引]; } }//端内环 }//末端外环 不能包含 #包括 int main() { std::string input=“California”; int a=0,b=0; 对于(int i=0;i)虽然您
对于(int i=0;i)虽然您提供了几个oreo字符串示例,但似乎您没有解释它们是什么。我编辑了输出,您没有告诉我们您遇到了什么问题。我们不会只为您编写代码。
s[s.length()]
超出了字符串和未定义行为的范围。@Yksisarvinen虽然s[s.length()]
确实超出了范围,但在C++11及更高版本中它不是未定义行为。length()
与size()
相同,当pos==size()
时,C++11保证运算符[]
返回对nul字符的引用。
int main(int argc, const char * argv[]) {
char stringValue[] = "California";
string s = stringValue;
string oreoString = "";
for(int index = 0; index < s.length(); index++){
for(int innerIndex = s.length(); innerIndex > 0; innerIndex--){
if(stringValue[index] == stringValue[innerIndex]){
oreoString = oreoString + stringValue[index];
}
}//End Inner-Loop
}//End Outer-Loop
cout << oreoString << endl;
return 0;
}
#include <string>
#include <iostream>
int main()
{
std::string input = "California";
int a = 0, b = 0;
for (int i=0; i<input.size(); ++i) {
for (int j=i; j<input.size(); ++j) {
if (input[i] == input[j] && (j-i+1) > (b - a + 1)) {
a = i;
b = j;
}
}
}
std::cout << input.substr(a, b-a+1) << std::endl;
}
#include <string>
#include <iostream>
#include <algorithm>
int main()
{
std::string input = "california";
int longest = 0;
int a = 0;
char occ[26]; memset(occ, -1, sizeof(occ));
for (int i=0; i<input.size(); ++i)
{
if (occ[input[i] - 'a'] == -1)
occ[input[i] - 'a'] = i;
if (i - occ[input[i] - 'a'] + 1 > longest) {
longest = i - occ[input[i] - 'a'] + 1;
a = occ[input[i] - 'a'];
}
}
std::cout << input.substr(a, longest) << std::endl;
}