华为题库-字符串分割

题目描述

•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:

连续输入字符串(输入2次,每个字符串长度小于100)

输出描述:

输出到长度为8的新字符串数组

示例1 输入 复制

abc 123456789

输出 复制

abc00000 12345678 90000000

思路:

通过while(cin>>string)开始循环,当长度len=str.size()大于等于8时,通过遍历输出前8位并每次进行len–,记录循环次数count,再输出8位直至len小于8,当len小于8时,计算需要添加0的位数request,通过遍历0至request-1来添加‘0’。

#注意元素的索引,应该为str[i+8count],因为每次遍历都是0-7索引,对应的str中应该对应循环遍数8后的索引。

代码:

#include <iostream>
#include <set>
#include <string>
using namespace std;

void stringSplitting()
{
	string str;
	
	while (cin >> str)
	{
		int len = str.size();
		int count = 0;
		
		while (len >= 8)
		{
			for (int i = 0; i < 8; i++)
			{
				cout << str[i+8*count];
				len--;
			}
			count++;
			cout << endl;
		}

		int request = 8 - len;

		while (len < 8 && request >0 &&request<8)
		{
			for (int i = 0; i < len; i++)
			{
				cout << str[i+8*count];
			}

			for (int j = 0; j < 8 - len; j++)
			{
					cout << '0';
					request--;
			}
			cout << endl;
		}
	}
}

int main()
{
	stringSplitting();
	system("pause");
	return 0;
}

另一种解法

根据str[index]去输出,每次输出时索引index++,以长度len为判断条件,每次输出以后len–。
对于不足8位的,令bit_count=8,以bit_count>0为判断条件,对每次输入都进行bit_count–。

代码:

void stringSplitting2()
{
	string str;
	while (cin >> str)
	{
		int len = str.size();
		int index = 0;
		while (len > 0)
		{
			if (len >= 8)
			{
				for (int i = 0; i < 8; i++)
				{
					cout << str[index];
					len--;
					index++;
				}
				cout << endl;
			}
			else
			{
				int bit_count = 8;
				while (len > 0)
				{
					cout << str[index];
					index++;
					len--;
					bit_count--;
				}
				while (bit_count > 0)
				{
					cout << 0;
					bit_count--;
				}
				cout << endl;
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值