题目描述:在字符串中找到出现相同的并且长度是最长的子串,输出该子串以及其首字符的位置。
例如mainStr="yyabcdabjcabceg",输出为"abc"和3。
分析:每次都找到最大长度的子串,然后正序和逆序查找该子串出现的位置。如果两者位置不相等,则说明两子串是相同的并且长度最长的子串,满足条件。否则继续遍历执行。
bool findSameMaxSubstr(const string& mainStr, string &subStr, int index) { bool isFind = false; int len = mainStr.length(); for (int i = len; i > 1; i--) { for (int j = 0; j < len; j++) { int firstIndex = 0; int secondIndex = 0; if (i + j < len) { subStr = mainStr.substr(i, j); firstIndex = mainStr.find(subStr); secondIndex = mainStr.rfind(subStr); if (firstIndex != secondIndex) { index = firstIndex + 1; return true; } } } } }