信息学奥赛一本通 1149:最长单词2 | OpenJudge NOI 1.13 16:最长单词2

【题目链接】

ybt 1149:最长单词2
OpenJudge NOI 1.13 16:最长单词2

【题目考点】

1. 字符串遍历
2. 处理多个字符串
3. while(cin >> …)读入字符串

适合于读入多个由空格分开的字符串

string s;
while(cin >> s)
{
	//...
}

调试时,输入Ctrl+z,按回车,即可结束输入,观察输出。

【题解代码】

解法1:遍历字符串

用一个字符数组保存当前查看的单词、最长单词,用变量保存最长单词长度。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	char s[505], word[505], mxWord[505];//s:完整字符串 word:当前查看的单词 mxWord:最长单词 
	cin.get(s, 505);
	int ct = 0, ctMax = 0, wi = 0, len;//ct:单词中字母计数 ctMax:最大单词长度 word_sp:最长单词开始的位置 
	len = strlen(s);
    for(int i = 0; i < len; ++i)
	{
		if(s[i] == ' ' || s[i] == '.')
		{
			word[wi] = '\0';//单词末尾加'\0',构成字符串 
			wi = 0;//wi还原,等待下次向word字符数组赋值 
			if(ct > ctMax)//如果该单词长度比已知最长的单词长度更长 
			{
				ctMax = ct;//ctMax记录最长单词长度 
				strcpy(mxWord, word);//mxWord保存最长的单词 
			}
			ct = 0;
		}
		else
		{
			ct++;//单词长度计数 
			word[wi++] = s[i];//将当前查看的字符s[i]填入word字符串中 
		}
	}
	cout<<mxWord;
	return 0;
}
解法2:将该句子分解为多个单词,然后找各单词中的最长单词。

分解出的多个单词可以保存在二维字符数组或string类数组中。该解法用string类数组。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s, word[505];
	getline(cin, s);//输入带空格的字符串
	int ws, wi = 0, mxi = 0;//ws:单词首字母下标 , wi:word数组下标, mxi:最长单词下标 
    for(int i = 0; i < s.length(); ++i)//遍历字符串
    {
        if(s[i] == ' ' || s[i] == '.')//当i位置是空格
        {
            word[wi++] = s.substr(ws, i - ws);//从ws位置开始,截取i-ws长度,即为一个单词
            ws = i + 1;//截取后,下个单词首字母位置为i + 1
        }
    } 
	for(int i = 0; i < wi; ++i)//求最长单词
	{
	    if(word[i].length() > word[mxi].length())
	       mxi = i;
    }
	cout<<word[mxi];
	return 0;
}
解法3:使用while(cin >>…)

适合于读入多个用空格分开的字符串

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s, s_mx;
    while(cin >> s)
    {
    	if(s[s.length()-1] == '.')//如果末尾是句号'.' 
    		s.pop_back();//删去末尾字符
		if(s.length() > s_mx.length())
			s_mx = s;
	}
	cout << s_mx;
    return 0;
}
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息学奥赛一本通1255:迷宫问题是一个关于迷宫的问题。这个问题要求通过广搜算法来解决迷宫问题,找到走出迷宫的路径。具体来说,迷宫可以看成是由n×n的格点组成,每个格点只有两种状态, "." 和 "#" 。其中 "." 代表可通行的路径,"#" 代表不可通行的墙壁。通过广搜算法,我们可以搜索从起点到终点的路径,找到一条合法的路径即可。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [信息学奥赛一本通 1255:迷宫问题 | OpenJudge NOI 2.5 7084:迷宫问题](https://blog.csdn.net/lq1990717/article/details/124721407)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [c++信息学奥赛一本通1215题解](https://download.csdn.net/download/Asad_Yuen/87357807)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [信息学奥赛一本通(1255:迷宫问题)](https://blog.csdn.net/lvcheng0309/article/details/118879231)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值