【华为机试】按字节截取字符串
来源:互联网 发布:c语言数组存储方式 编辑:程序博客网 时间:2024/06/06 06:55
题目描述
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
输入描述:
输入待截取的字符串及长度
输出描述:
截取后的字符串
分析一:先输出前n-1个字符,在看最后一个字符的ASCII是大于等于0的,还是小于0的,小于0的表示汉字。大于等于0时直接输出,小于0时先看前面小于0的个数是奇数还是偶数,奇数输出,偶数不输出。
#include <iostream>#include <string>using namespace std;int main(){string s;int a;while(cin>>s>>a){if(a==0||s.size()<a) continue;int i=0;while(i<a-1) //输出前a-1个字节;cout<<s[i++];if(s[i]<0) { //判断最后一个字节是否输出;int k=0;for(int j=i-1;j>=0;--j){if(s[j]<0) ++k;}if(k%2==1) cout<<s[i]<<endl; //如果前面有单数个<0的字节,输出最后一个字节;else cout<<endl;}else cout<<s[i]<<endl;}return 0;}
分析二:输出string时,里面包含了判断最后一个字符的是否是汉字的情况,所以直接输出前n个字符就行了。
include <iostream>#include <string>using namespace std;int main(){string s;int n;while(cin>>s>>n){for(int i=0;i<n;++i)cout<<s[i];cout<<endl;}return 0;}
阅读全文
0 0
- 华为机试-按字节截取字符串
- 【华为机试】按字节截取字符串
- 华为机试练习---按字节数截取字符串
- 华为机试: 按字节截取字符串、超长正整数相加
- 华为OJ(按字节截取字符串)
- 【华为OJ】【088-按字节截取字符串】
- 华为OJ:按字节截取字符串
- 华为OJ——按字节截取字符串
- 华为OJ——按字节截取字符串
- [华为OJ--C++]088-按字节截取字符串
- 华为OJ——Java按字节截取字符串
- 华为OJ——按字节截取字符串
- 按字节截取字符串
- 按字节截取字符串
- 按字节截取字符串
- 按字节截取字符串
- 按字节截取字符串
- 按字节截取字符串
- python列表list
- 程序员高效率办公软件(推荐)。
- LeetCode--Search for a Range
- 方正科技的发家历程
- 自动打包批处理
- 【华为机试】按字节截取字符串
- Oracle简单查询,常用函数(SQL语句集)
- 项目中常见报错,保存下,以后遇到可以快速解决
- 常用快捷键
- Java中StringBuilder清空数据方法比较
- MongoDB数据库索引
- Application XXX is waiting for the debugger to Attach
- (UESTC
- 91. Decode Ways