【acwing每日一题】1442. 单词处理器(模拟)

本文主要探讨了一段包含空格的字符串如何通过getline进行处理。代码示例展示了如何将输入的字符串按空格分割,并判断各子串长度以满足特定条件。这个过程在处理隧道穿越问题时非常关键,涉及到字符串操作和条件判断,对于理解和优化字符串处理算法具有指导意义。
摘要由CSDN通过智能技术生成

穿越隧道

看到带有空格的字符串,需要练就下意识用getline。

#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
string s;
int n,k;
//string st[N];
struct node{
	string st;
	int len;
}st[N];
int j;
int main(){
	cin >> n >> k;
	getchar();
	getline(cin,s);
//	cin >> s;
	string t ="";
	for(int i = 0; i < s.size(); i++){
		if(s[i]!=' '){
			t += s[i];
		} 
		else{
			st[j].st = t;
			st[j++].len = t.size();
			t = "";
		}
	}
	if(t != "") st[j].st = t,st[j++].len = t.size();
//	for(int i = 0; i < j; i++){
//		cout << st[i].st <<" " << st[i].len << endl;
//	}
	int kk = k;
	st[j].len = 0x3f3f3f3f;
	for(int i = 1; i <= j; i++){
		if(st[i-1].len + st[i].len <= kk){
			cout << st[i-1].st <<" ";
			kk -= st[i - 1].len;
		}
		else if((st[i - 1].len + st[i].len > kk ) && st[i - 1].len <= kk){
			cout << st[i - 1].st << endl;
			kk = k;
		}
	}
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值