栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言下的重排串问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言下的重排串问题

方法一:统计相应字符的个数(用它们的ASCLL码统计)

首先建个字符表,即129个元素的数组,比如:a[129]。

(ASCLL码表从000开始,128以后的字符现在编译器大多不识别)

并把它初始化为0,当下面统计字符个数的时候,把与该字符的ASCLL码对应的数组a的元素加1,比如:检测到字符a,其ASCLL码值097,故,a[97]++

#include
#include
int main()
{
	int a[129]={};
	
	int i,p,q;
	char str1[20],str2[20];
	gets(str1);gets(str2);
	p=strlen(str1),q=strlen(str2);
	for(i=0;i 

方法二:用字符串str1去遍历字符串str2,如果有相同的就碰撞,即将这两个字符都赋值为0。最后进行遍历,判断现在两个字符串的元素是否都为0,是的话就是重排串。

#include
#include
int main()
{
	char str1[20],str2[20];
	int i,j,p,q;
	gets(str1);gets(str2);
	p=strlen(str1);
	q=strlen(str2);
	printf("%s and %s ",str1,str2);
	if(p!=q) {printf("are not mutually sorted string.");return 0;}
//上一行比较p,q,即比较字符串的长度
	else 
	for(i=0;i 

方法三:将字符串按照ASCLL码大小进行排序,然后比较

(这个算法思路是对的,还有一点小问题,学习通半对)

#include
#include
int main()
{
	char str1[20],str2[20];
	int i,j,t,p,q,cnt,min;
	gets(str1);gets(str2);
	p=strlen(str1);
	q=strlen(str2);
//排序的方法有很多,我下面用的是选择排序,并且非必要不交换^-^
	for(i=0;istr1[j]) t=str1[j],cnt++,min=j;
		}
		if(cnt!=0) t=str1[i],str1[i]=str1[min],str1[min]=t;
	}
	for(i=0;istr2[j]) t=str2[j],cnt++,min=j;
		}
		if(cnt!=0) t=str2[i],str2[i]=str2[min],str2[min]=t;
	}
	if(strcmp(str1,str2)==0) 
	printf("%s and %s are mutually sorted string.",str1,str2);
	else printf("%s and %s are not mutually sorted string.",str1,str2);
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/869108.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号