가장 긴 하위 문자열을 반복하지 않기를 구합니다.

1276 단어
가장 긴 자열을 반복하지 않는 방법을 구하는 데는 많은 방법이 있다.
하지만 초보자로서 가장 기본적인 방법밖에 할 수 없다.
코드는 다음과 같습니다.
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    int t;
    cin>>t;
    for(int h=0;h<t;h++)
    {
        cin>>s;
        int max=1;
        int n=s.size();
        for(int i=0;i<n-1;i++)
        {
            int flag=0;
            for(int j=i+1;j<n;j++)
            {
                 for(int m=i;m<j;m++)
                  {
                     for(int u=m+1;u<=j;u++)
                     {
                           if(s[m]==s[u])
                           {
                                 flag=1;
                                 break;
                            }
                      }
                     if(flag==1) break;
                   }

                   if(flag==0&&(j-i+1)>max)
                   {
                       max=j-i+1;

                   }

              }

           }
          cout<<max<<endl;
      }
return 0;
}

이 방법은 일련의 문자의 모든 하위 문자열을 검사하고 조건에 부합되는 모든 중복 문자열의 길이를 비교하여 가장 긴 중복 문자열을 찾아내는 것이다.
바깥의 두 층 순환은 모든 하위 문자열을 두루 훑어보고, 안의 두 층 순환은 하위 문자열에 중복 문자가 있는지 검사합니다.안의 두 층이 순환하여 끼워 넣을 때 순환이 끝나는 조건에 주의해야 한다.

좋은 웹페이지 즐겨찾기