zoukankan      html  css  js  c++  java
  • [Nowcoder] 寻找子串

    给出一个非空的字符串,判断这个字符串是否是由它的一个子串进行多次首尾拼接构成的。
    例如,"abcabcabc"满足条件,因为它是由"abc"首尾拼接而成的,而"abcab"则不满足条件。
     
    要求:求最长的拼接子串
    思路:从原字符串的1/2处开始截取,判断截取的字符串可否构成原字符串。然后再从1/3出截取判断,直到截取字符串长度为1,在这个过程中,如果存在符合条件的子串,那么它一定是最长子串,挑出循环输出即可。如果所有循环结束都没有找出符合条件的子串,那么输出false
    #include <iostream>
    #include <string>
    using namespace std;
     
    int main()
    {
        string str;
        while (cin >> str)
        {
            int n = str.size();
            bool isOk = false;
            for (int i = n/2; i >= 1; --i)
            {
                string tmp = str.substr(0, i);
                string res;
                for (int j = 0; j < n / i; ++j)
                    res += tmp;
                if (res == str)
                {
                    cout << tmp << endl;
                    isOk = true;
                    break;
                }
            }
            if (!isOk)
                cout << "false" << endl;
        }
        return 0;
    }
  • 相关阅读:
    暗影精灵3安装无线网卡驱动(ubuntu16.04)
    装饰器之基本
    pyhton代码规范
    2.线程
    文件拾遗
    闭包函数
    6.文件基本操作
    1.socket网络编程
    9.异常处理
    Python语言规范
  • 原文地址:https://www.cnblogs.com/immjc/p/9455657.html
Copyright © 2011-2022 走看看