Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 分区字符串C++;_C++_String - Fatal编程技术网

C++ 分区字符串C++;

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)虽然您

我需要找到一个包含两个嵌套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)虽然您提供了几个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;
}