小P的字符串

题目描述
小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