7 solutions

  • 2
    @ 2023-12-24 10:56:41
    #include <iostream>
    using namespace std;
    string n,ans;
    int s[505],sum,x,ma;
    int main(){
    	getline(cin,n);
    	long t=n.size();
    	for(int i=0;i<t;i++){
    		if(n[i]!=' ') s[x]++;
    		else x++;
    	}
    	for(int i=0;i<x;i++) ma=max(ma,s[i]);
    	for(int i=0;i<t;i++){
    		if(n[i]!=' ') sum++,ans+=n[i];
    		else if(sum==ma){
    			cout<<ans;
    			break;
    		}
    		else sum=0,ans="";
    	}
    	return 0;
    }
    
    • 1
      @ 2023-10-28 20:27:46

      按最长最短单词改一下就行了

      #include<iostream>
      #include<string>
      using namespace std;
      int main()
      {
       string a;
       getline(cin,a);//输入
       a+=' ';
       string s="",b="";
       for(int i=0;i<a.length();i++)
       { 
        if(a[i]==' ' || a[i]=='.')//当为空格或句号时
        {
         if(b.length()>s.length())//是不是最长单词
         {
          s=b;//记录
         }
         b="";//重置
        }
        else
         b+=a[i];//连接单词
       }
       cout<<s;//输出
       return 0;//完结散花!
      }
      
      • 1
        @ 2023-10-28 15:41:58
        #include<iostream>
        using namespace std;
        string n,ans;
        int s[505]={0},sum=0;
        int x=0;
        int ma=0;
        int main(){
        	getline(cin,n);
        	long t=n.size();
        	for(int i=0;i<t;i++){
        		if(n[i]!=' ') s[x]++;
        		else if(n[i]==' ') x++;
        	}
        	for(int i=0;i<x;i++) ma=max(ma,s[i]);
        	for(int i=0;i<t;i++){
        		if(n[i]!=' '){
        			sum++;
        			ans+=n[i];
        		}else if(sum==ma){
        			cout<<ans;
        			break;
        		}else{
        			sum=0;
        			ans="";
        		}
        	}
        	return 0;
        }
        

        最笨的方法

        • 0
          @ 2024-10-22 19:12:39
          //x.length()的意思是x这个字符串的长度 
          //例:x = "Hello", x.length() = 5 
          //用char空格不能被接收到 
          #include<bits/stdc++.h>
          using namespace std;
          int main()
          {
          	string a;
          	getline(cin,a);//输入
          	a+=' ';//不然后面就不能判定为一个词 
          	string max="";//最大 
          	string b="";//临时 
          	for(int i = 0;i < a.length();i++)//i不能等于1 
          	{ 
          		if(a[i]==' ' || a[i]=='.')//当为空格或句号时
          		{
          			if(b.length()>max.length())//如果比原最大还大
          			{
          				max=b;//记录
          			}
          			b="";//重置
          			//有空格和句号一定要重置 
          		}
          		else//不然 
          		{
          			b+=a[i];//连接单词
          		}
          	}
          	cout << max;//输出
          	return 0;//完结散花!
          }
          
          • 0
            @ 2023-10-15 11:05:05
            #include<bits/stdc++.h>
            using namespace std;
            int ml,mp,sum;
            string s;
            int main()
            {
            	getline(cin,s);
            	for(int i=0;i<s.size();i++)//遍历
            	{
            		if(s[i]!=' '&&s[i]!='.')sum++;//如果s[i]不是空格或句号计数器就+1
            		else if(sum>0)//如果s[i]是空格或句号并且前面有字符
            		{
            			if(sum>ml)//如果当前单词长度大于最长单词长度
            			{
            				ml=sum;//最长单词长度变为当前单词长度
            				mp=i-sum;//最长单词位置变成当前单词位置
            			}
            			sum=0;//计数器归0
            		}
            	}
            	for(int i=mp;i<=mp+ml-1;i++)cout<<s[i];
            	return 0;
            }
            
            
            • 0
              @ 2023-10-10 19:17:38
              using namespace std;
              string a;
              int maxx1,maxx2;
              int main(){
              	int maxn=0;
              	getline(cin,a);
              	int ans=0;
              	int i=0;
              	for(;i<a.size();i++){
              		if(a[i]==' ' || a[i]==',' || a[i]=='.'){
              			if(ans>maxn){
              				maxx1=i-ans;
              				maxx2=ans;
              				maxn=ans;
              			}
              			ans=0;
              		}
              		else ans++;
              		
              	}
              	for(int i=maxx1;i<maxx1+maxx2;i++){
              		cout<<a[i];
              	}
              	return 0;
              }
              

              一点不短小精悍

              • 0
                @ 2023-10-10 18:51:38
                #include <bits/stdc++.h>
                using namespace std;
                string s;
                int mx,n,mxe;	// mx 是最大长度, n 是当前单词长度, mxe 是最长单词的结束位置
                int main(int argc, char **argv){
                	getline(cin,s);
                	for(int i = 0;s[i];i++){
                		if (s[i] == ' '){
                			if (n > mx){
                				mx = n;
                				mxe = i;
                			}
                			n = 0;
                		}else{
                			n++;
                		}
                	}
                	for (int i = mxe - mx;i < mxe;i++){
                		cout << s[i];
                	}
                	return 0;
                }
                

                说真的,这个吧 A1143 改一下就行了

                还是大石头一个

                • 1

                Information

                ID
                635
                Time
                1000ms
                Memory
                256MiB
                Difficulty
                4
                Tags
                # Submissions
                88
                Accepted
                38
                Uploaded By