openjudge 1.7.24 单词的长度

OpenJudge - 24:单词的长度


解题思路:

1.由题可得,整行字符串中每个单词有至少一个空格分割,输出每个单词的长度

2.首先,利用获取整行的方法得到字符串,因为首尾没有空格,这里我们首尾加上空格,预处理一下,然后开始遍历,确定单词的长度,那么就要确定单词的起始位置终止位置,用start和end来表示,如果当前位置是空格,下一位置不是空格,那么为单词的起点,即start=i+1;并且标记起点找到了,同理,如果当前位置不是空格,下一位置是空格,那么为单词的终点,end=i;同样标记终点找到了

3.在起点和终点都找到的时候,输出长度end-start+1,思考为什么加1

4.输出的时候注意逗号,利用打标记的方法,先输出一个数,然后再输出逗号和单词长度


#include<bits/stdc++.h>
using namespace std;
int main()
{
	string a;
	int start,end;//定义单词首尾的标记点 
	bool flag1=0,flag2=0,flag=1;
	getline(cin,a);//获取整行字符串 

	a=' '+a+' ';//首尾加空格,统一处理 

	for(int i=0;i<=a.length()-1;i++)
	{
		if(a[i]==' '&&a[i+1]!=' ')//如果当前位置是空格,下一位置不是空格 
		{
			start=i+1;//记录单词起始点 
			flag1=1;//标记找到了起始点 
		}

		if(a[i]!=' '&&a[i+1]==' ')//如果当前位置不是空格,下一位置是空格 
		{
			end=i;//记录单词终止点 
			flag2=1;//标记找到了终止点 
		}

		if(flag1==1&&flag2==1)//如果起始点和终止点都找到 
		{
			
			if(flag==1)//逗号的处理 
			{
				cout<<end-start+1;
				flag=0;
			}
			else
			cout<<","<<end-start+1;
			flag1=0;//起始点取消标记 
			flag2=0;//终止点取消标记 
		}
	}

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值