题目描述
小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=;
string arr;
cin>>str;
str=' '+str;
len=str.length();
for(i=;i<=len-;i++){
arr.clear();
num=;
arr=str.substr(i,);
// cout<<"arr="<<arr<<endl;
for(j=;j<arr.length();j++)
if(arr[j]-'')
num+=pow(,-j); if(num>=&&num<=) {
i+=;
sum++;
cout<<"arr="<<arr<<endl;
//}
}
}
cout<<sum;
}
思路特么的正确,错在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=;
string arr;
while(cin>>str){
str=' '+str;
len=str.length();
sum=;
for(i=;i<=len-;i++){
arr.clear();
num=;
arr=str.substr(i,);
// cout<<"arr="<<arr<<endl;
for(j=;j<arr.length();j++)
if(arr[j]-'')
num+=pow(,-j); if(num>=&&num<=||num>=&&num<=) {
i+=;
sum++;
// cout<<"arr="<<arr<<endl;
//}
}
}
cout<<sum<<endl;
}
}