您的位置:首页 > 其它

位运算法:字符串 A 和 B 是否为兄弟,是否包含问题

2015-11-05 11:21 459 查看
例如:

char *stra = "abc";

char *strb = "bca";

char *strc = "rfdabcgg";

char *strd = "bca";

stra 和 strb 为兄弟字符串

strc 包含 strd

#include <stdio.h>
#include <string.h>

int is_brother(char *a , char *b)
{
int flag = 0;
int i;

if (strlen(a) != strlen(b))
return 0;

for ( i = 0; i< strlen(a); i++ ) {
flag |= (1 << (*(a + i) - 'A'));
}

for ( i = 0; i < strlen(b); i++ ) {
if( (flag & (1 << (*(b +i) - 'A'))) == 0)
return 0;
}

return 1;
}
int stringcontain(char *a_long, char *b_short)
{
int flag = 0;
int i;
for ( i = 0; i< strlen(a_long); i++ ) {
flag |= (1 << (*(a_long + i) - 'A'));
}

for ( i = 0; i < strlen(b_short); i++ ) {
if( (flag & (1 << (*(b_short +i) - 'A'))) == 0)
return 0;
}

return 1;

}

int main( int argc, char **argv )
{
char *stra = "abc";
char *strb = "bca";
char *strc = "rfdabcgg";
char *strd = "bca";

printf( "1 == True \n 0 == Flse \n" );
printf( "stra and strb is_brother = %d\n", is_brother(stra, strb) );
printf( "strc contain std = %d\n", stringcontain(strc,strd) );

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: