3 solutions

  • 3
    @ 2024-3-15 14:59:01
    枚举奇偶,向两边扩张
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	string s;
    	getline(cin,s);
    	int res=0;
    	for(int i=0;i<s.size();i++)
    	{
    		int l=i-1,r=i+1; //回文串长度是奇数的情况 
    		while(l>=0&&r<s.size()&&s[l]==s[r]) l--,r++; 
    		res=max(res,r-l-1);
    		l=i,r=i+1;       //回文串长度是偶数的情况 
    		while(l>=0&&r<s.size()&&s[l]==s[r]) l--,r++;
    		res=max(res,r-l-1);
    	}
    	cout<<res;
    	return 0;
    }
    
    • 1
      @ 2025-3-30 15:18:50
      枚举奇偶,向两边扩张
      #include<bits/stdc++.h>
      using namespace std;
      int main()
      {
      	string s;
      	getline(cin,s);
      	int res=0;
      	for(int i=0;i<s.size();i++)
      	{
      		int l=i-1,r=i+1; //回文串长度是奇数的情况 
      		while(l>=0&&r<s.size()&&s[l]==s[r]) l--,r++; 
      		res=max(res,r-l-1);
      		l=i,r=i+1;       //回文串长度是偶数的情况 
      		while(l>=0&&r<s.size()&&s[l]==s[r]) l--,r++;
      		res=max(res,r-l-1);
      	}
      	cout<<res;
      	return 0;
      }
      
      
      • -3
        @ 2024-9-18 20:21:07
        #include<bits/stdc++.h>
        using namespace std;
        int main(){
        	string shuru;
        	cin>>shuru;
        	int jishu=0;
        	for(int i=0;i<shuru.size();i++)
        	{
        		int qian=i-1,hou=i+1;
        		while(shuru[qian]==shuru[hou]&&qian>-1&&hou<shuru.size())
        		{
        			qian--;
        			hou++;
        		}
        		jishu=max(hou-qian-1,jishu);
        		
        		qian=i;
        		hou=i+1;
        		while(shuru[qian]==shuru[hou]&&qian>-1&&hou<shuru.size())
        		{
        			qian--;
        			hou++;
        		}
        		jishu=max(hou-qian-1,jishu);
        	}
        	cout<<jishu;
        	return 0;
        }
        
        
        
        • 1

        Information

        ID
        79
        Time
        1000ms
        Memory
        256MiB
        Difficulty
        3
        Tags
        # Submissions
        89
        Accepted
        23
        Uploaded By