1 条题解

  • 0
    @ 2023-1-8 9:43:00

    输入一行字符串进行分析

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    int main()
    {
    	getline(cin,s);
    	s = " "+s;
    	s[s.length()-1]=' ';
    	int p,q;//标记上一个空格和当前空格的位置
    	int ansP,ansQ;//最长单词的两个空格的位置
    	p=0;
    	ansP=ansQ=0;
    	for(int i=1;i<s.length();i++){
    		if(s[i]==' '){
    			q=i;
    			//当前的单词:s[p+1]~s[q-1]
    			if(q-p>ansQ-ansP) 
    			{
    				ansP=p;
    				ansQ=q;
    			}
    			p=i;
    		}
    	}
    	for(int i=ansP+1;i<=ansQ-1;i++)
    		cout<<s[i];
    	return 0;
    }
    
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	string s;
    	getline(cin,s);
    	s=" "+s; //前面加一个空格 
    	s[s.length()-1]=' ';//最后的点号改成空格 
    	int last=0;//上一个空格的位置 
    	int now;//当前空格的位置
    	int ansL=0,ansR=0;//最终最长的单词对应的两个空格位置 
    	for(int i=0;i<s.length();i++){
    		if(s[i]==' '){
    			now = i;
    			//s[last] 与 s[now] 之间夹了一个单词
    			int len = now-last-1; 
    			if(len>ansR-ansL-1){
    				ansR=now;
    				ansL=last;
    			}	
    			last=now;	
    		}
    	} 	
    	for(int i=ansL+1;i<=ansR-1;i++)
    		cout<<s[i];
    	return 0;
    }
    

    使用 cin 忽略空格读单词

    #include<bits/stdc++.h>
    using namespace std;
    string s,ans;
    int main()
    {
    	while(1){
    		cin>>s;
    		if(s[s.length()-1]=='.'){
    			if(s.length()-1>ans.length())
    				ans=s;
    			break;			
    		}else{
    			if(s.length()>ans.length())
    				ans=s;	
    		}
    	}
    	for(int i=0;i<ans.length();i++)
    		if(ans[i]!='.')
    			cout<<ans[i];
    	return 0;
    }
    

    配合 substr 简化

    #include<bits/stdc++.h>
    using namespace std;
    string s,ans;
    int main()
    {
    	while(1){
    		cin>>s;
    		if(s[s.length()-1]=='.'){
    			if(s.length()-1>ans.length())
    				ans=s.substr(0,s.length()-1);
    			break;			
    		}else{
    			if(s.length()>ans.length())
    				ans=s;	
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 1

    信息

    ID
    369
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    (无)
    递交数
    128
    已通过
    65
    上传者