2018 京东校招笔试题 两个子串

    xiaoxiao2022-07-05  186

    题目描述

    给定一个字符串s, 请计算输出含有连续两个s作为子串的最短字符串。 注意两个s可能有重叠部分。例如,"ababa"含有两个"aba".

    输入描述:

    输入包括一个字符串s,字符串长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母.

    输出描述:

    输出一个字符串,即含有连续两个s作为子串的最短字符串。

    示例1

    输入

    abracadabra

    输出

    abracadabracadabra

    这里是用模拟的思路,先找到匹配的字符串,再做一次拼接,使用C++ string的常用操作。

    #include<iostream> #include<string> using namespace std; int main() { string str, res; cin >> str; int index; for (int i = 1; i < str.size(); i++) { if (str.substr(0, i) == str.substr(str.size() - i, i)) index = i; } //cout << index << endl; cout << str + str.substr(index, str.size() - index); }

     

    最新回复(0)