一、题目描述
请编写一个函数用于判断输入的int数是否是-2的整数次幂加1 ((-2)^N+1)
测试用例:
1 2 1205 -7
输出正确
10 -9
输出错误
代码实现:
bool isPowerOfNegativePlusOne(int numbser){
if(n < 0){
n -= 1;
n = -n;
}
else{
n -= 1;
}
if(n & (n-1)==0)
return true;
else
return false;
}
二、题目描述
一个由数字组成的字符串长度为L,判断字符串是否为存在长度为k的区间,在该区间内的数字排序后是连续的(相同数字视为连续),若存在,给出存在几个这样的区间。
输入描述:
一个长度为L的由数字组成的字符串S,以及数据区间的长度k。
输出描述:
满足上述要求区间的个数。
输出实例:
123456789 2
1345321898 3
代码实现:
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
bool check(string s){
for(int i=0; i<s.length(); ++i){
for(int j=i; j<s.length()-1-i; ++j){
if(s[j+1]==s[j]+1 || s[j]==s[j+1]){
continue;
}
else{
return false;
}
}
}
return true;
}
int howManySub(string s, int k){
string t;
int cnt = 0;
for(int i=0; i<=s.length()-k; ++i){
t = s.substr(i,k);
sort(t.begin(), t.end());
if(check(t)==true){
cnt ++;
}
}
return cnt;
}
int main(){
string s;cin>>s;
int k;cin>>k;
cout<<howManySub(s,k);
return 0;
}