Cho xâu kí tự S chỉ chứa các kí tự chữ cái thường. Hãy tìm độ dài lớn nhất của xâu con của S mà kí tự đầu tiên và kí tự cuối cùng của xâu con đó là giống nhau. Ví dụ: Input Output abcda 5

2 câu trả lời

#include<bits/stdc++.h>
using namespace std;
int main()
{
 string s;
 cin>>s;
 int a1[200]={0} ,m=0;
 for (int i=0; i<s.size(); i++)
 {
  if (a1[ s[i] ]==0) a1[ s[i] ]=i+1;
  else {
   m=max( m , i-a1[ s[i] ]+2 );
  }
 } 
 cout<<m;
}

#include <iostream>
#include <map>
using namespace std;

int res = 1;
string s;
map<char, int> m;

int main() {
    cin >> s;
    s = " " + s;
    
    for (int i = 1; i < s.size(); ++i) {
        if (m[s[i]])
            res = max(res, i - m[s[i]] + 1);
        else
            m[s[i]] = i;
    }
    
    cout << res;
}

Câu hỏi trong lớp Xem thêm