小P的字符串

本文探讨了如何从由0、1组成的字符串中截取出对应英文字母ASCII值的子串,通过分析二进制与ASCII码的关系,提供了一种算法实现思路,详细解释了代码的逻辑与错误修正。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
小P最近在研究字符编码,给出一串由0、1组成的字符串,从中任意进行截取,如果截取的字符串对应一个英文字母的ASCII值,小P就把这个0、1串叫字母子串,问给定的字符串最多能截取出多少个字母子串。 
输入
测试数据有多组,每组一行由0、1组成的字符串,每行长度不超过10000。  
输出
对于每组输入,在一行中输出最多可以截取的字母子串的数量。 
样例输入 Copy
1011010111
样例输出	Copy
1
提示
每个字母的ASCII码对应的二进制数都是7位, 1011010 的值是90,对应的是大写字母‘Z’的ASCII码,剩下的是111不对应任何字母,所示只能截取出一个字母子串。

 错误代码:‘

#include<iostream>
#include<cmath>
using namespace std;
string str;
int main()
{
    int j,i,len,num,sum=0;
    string arr;
    cin>>str;
    str=' '+str;
    len=str.length();
    for(i=1;i<=len-7;i++){
    arr.clear();
    num=0;
    arr=str.substr(i,7);    
//    cout<<"arr="<<arr<<endl;
    for(j=0;j<arr.length();j++)
    if(arr[j]-'0')
    num+=pow(2,6-j);
    
    if(num>=65&&num<=122) {
    i+=6;
    sum++;
    cout<<"arr="<<arr<<endl;
//}
    }
} 
cout<<sum;
}
View Code

 思路特么的正确,错在a---z  65--90   A----Z    97---122

#include<iostream>
#include<cmath>
using namespace std;
string str;
int main()
{
    int j,i,len,num,sum=0;
    string arr;
    while(cin>>str){
    str=' '+str;
    len=str.length();
    sum=0;
    for(i=1;i<=len-7;i++){
    arr.clear();
    num=0;
    arr=str.substr(i,7);    
//    cout<<"arr="<<arr<<endl;
    for(j=0;j<arr.length();j++)
    if(arr[j]-'0')
    num+=pow(2,6-j);
    
    if(num>=65&&num<=90||num>=97&&num<=122) {
    i+=6;
    sum++;
//    cout<<"arr="<<arr<<endl;
//}
    }
} 
cout<<sum<<endl;
}
}
View Code

 

转载于:https://www.cnblogs.com/helloworld2019/p/10471932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值