字符串-字符串的包含-寻找兄弟字符串 课后题答案
来源:互联网 发布:和女生网络聊天用语 编辑:程序博客网 时间:2024/06/10 07:31
问题:如果两个字符串中的字符串一样,出现的次数也一样,只是顺序不同,则认为两个字符串是兄弟字符串.现在提供一个字符串,请问如何在字典中迅速找到他的兄弟字符串
/*2016 9 27问题:如果两个字符串中的字符串一样,出现的次数也一样,只是顺序不同,则认为两个字符串是兄弟字符串.现在提供一个字符串,请问如何在字典中迅速找到他的兄弟字符串1.简单起见字符串的元素都为小写2.目标abc 字典为kjjhkjdkfnsljdfcbakjhjbcaacb(有cba bca acb三个兄弟)思路 1.建立一个26个元素的数组,对应26个字母,某个字母出现一次则在对应的位置++2.一次在字典中取出三个元素组成待验证字符串,按1步骤处理3.比较两个数组是否相同,若相同则是兄弟字符串*/#include <stdlib.h>#include <stdio.h>#include <string.h>/*判断是否为兄弟a是比较的字符串,b是字典*/int FindCharBrother(char *a,char *b,int left,int right){ int arr_a[26]={0};int arr_obj[26]={0};int i;for(i=0;i<strlen(a);i++){ arr_a[a[i]-'a']++;}for(i=left;i<right;i++){ arr_obj[b[i]-'a']++;}//判断两个数组是否相同for(i=0;i<26;i++){ if(arr_a[i]!=arr_obj[i])return 0;}return 1;}/*打印兄弟字符串*/void PrinCharBrother(char *b,int left,int right){ int i; for(i=left;i<right;i++) { printf("%c",b[i]); }printf("\n");}/*依次在字典中取出strlen(a)元素,用FindCharBrother()判断是否为兄弟*/void CharBrother(char *a,char *b){ int i;int flag;for(i=0;i<strlen(b);i++){ flag=FindCharBrother(a,b,i,i+strlen(a));//依次在字典中取出strlen(a)元素判断是否为兄弟 if(flag)PrinCharBrother(b,i,i+strlen(a));}}int main(){ char a[]="abc";char b[]="kjjhkjdkfnsljdfcbakjhjbcaacb";//字典CharBrother(a,b);}./a.out
cba
bca
acb
0 0
- 字符串-字符串的包含-寻找兄弟字符串 课后题答案
- 寻找兄弟字符串
- 寻找兄弟字符串
- 字符串的包含——《编程之法》课后题答案
- 兄弟字符串的判断
- leetcode题3 寻找字符串不包含重复字符的最长子字符串
- 寻找字符串A中完全包含字符串B的最短子字符串
- 寻找字符串A中完全包含字符串B的最短子字符串
- 字符串的旋转——《编程之法》课后题答案
- 字符串的全排列——《编程之法》课后题答案
- 字符串的组合——《编程之法》课后题答案
- 算法题:求兄弟字符串
- 字符串的包含实现
- 字符串的包含问题
- 字符串的包含 php
- 字符串的包含
- 字符串的包含
- 字符串的包含
- Java实现基于Redis的分布式锁
- 3665顺序表应用8:最大子段和之动态规划法
- Proguard代码混淆
- 多核多线程基础
- 正则表达式(Regular Expression,regex,regexp)
- 字符串-字符串的包含-寻找兄弟字符串 课后题答案
- 数论,优化,预处理(GCD 等于 XOR,uva 12716)
- 清楚浮动最好用的方法,兼容各浏览器
- C++的向上类型转换
- 【POJ 1463】【hdu 1054】Strategic game(树形dp)
- 第五周项目4-数制转换
- java super的使用
- flex启动事件
- leetcode 221. Maximal Square