4 条题解

  • 1
    @ 2025-5-12 19:57:58
    #include <iostream>
    #include <map>
    using namespace std;
    map<char,int> mp;
    int main(){
      int n;
      string s;
      cin>>n>>s;
      int ans=0,cnt=0;
      for(int i=0;i<n;i++){
        for(int j=i;j<n&&!mp[s[j]];j++){
          mp[s[j]]++;
          cnt++;
        }
        mp.clear();
        ans=max(ans,cnt);
        cnt=0;
      }
      cout<<ans<<endl;
      return 0;
    }
    
    • 0
      @ 2026-3-15 12:04:12

      st解君愁

      #include<bits/stdc++.h>
      using namespace std;
      typedef long long ll;
      ll T=1;const ll N=2e5+5;
      ll n,x,y;ll cnt;ll pre[N];
      void solve(){
      	cin>>n;string a;cin>>a;
      
      	ll l=1;ll r=2;a=" "+a;
      	set<char>st;
      	while(r<=n){
      		if(st.find(a[r])==st.end()){
      			st.insert(a[r]);
      			cnt=max(cnt,r-l+1);r++;
      		}else{
      			st.erase(a[l]);l++;
      		}
      		
      	}cout<<cnt;
      }
      
      int main(){
      	while(T--)solve();
      	return 0;
      } 
      ```echarts
      
      
      • 0
        @ 2026-3-11 19:08:59
        import sys
        input = lambda:sys.stdin.readline().strip()
        
        n = int(input())
        a = "0" + input()
        
        i = j = 1
        ans = 0
        cur = []
        
        while(j<=n):
            if a[j] not in cur:
                cur.append(a[j])
                ans=max(ans,j-i+1)
                j+=1
            else:
                cur.remove(a[i])
                i+=1
        print(ans)
        
        • 0
          @ 2025-5-8 22:06:32

          JAVA ac代码:

          import java.util.*;
          import java.util.StringTokenizer;
          import java.io.*;
          
          public class Main {
          
          	public static void main(String[] args) {
          		int n=in.nextInt();
          		int left=0,ans=0;
          		String s=in.next();
          		Set<Character> set=new HashSet<>();
          		for(int right=0;right<s.length();right++){
          			char c=s.charAt(right);//看这个字符是什么
                //如果集合中有这个字符,则删除前面的字符,直至集合中没有这个字符
                while(set.contains(c)){
          				set.remove(s.charAt(left));
          				left++;
          			}
                //加上现在的字符
          			set.add(c);
                //两个指针计算距离
          			ans=Math.max(ans,right-left+1);
          		}
          		out.println(ans);
          		out.close();
          	}
          	
          	
          
          	static FastReader in=new FastReader();
          	static PrintWriter out=new PrintWriter(System.out);
          	static class FastReader{
          		static BufferedReader br;
          		static StringTokenizer st;
          		FastReader(){
          			br=new BufferedReader(new InputStreamReader(System.in));
          		}
          		String next() {
          			String str="";
          			while(st==null||!st.hasMoreElements()) {
          				try {
          					str=br.readLine();
          				}catch(IOException e) {
          					throw new RuntimeException(e);
          				}
          				st=new StringTokenizer(str);
          			}
          			return st.nextToken();
          		}
          		int nextInt() {
          			return Integer.parseInt(next());
          		}
          		double nextDouble() {
          			return Double.parseDouble(next());
          		}
          		long nextLong() {
          			return Long.parseLong(next());
          		}
          	}
          	
          }
          
          
          • 1

          信息

          ID
          74
          时间
          1000ms
          内存
          256MiB
          难度
          2
          标签
          递交数
          148
          已通过
          59
          上传者