实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构) 学习自 http://hawstein.com/posts/1.1.html
#include<stdio.h> #include<string.h> bool isunique1(char s[]) { bool a[256]; memset(a,0,sizeof(a)); //注意初始赋值 int len=strlen(s); for( int i=0;i<len;i++) { int v=(int)s[i]; if((a[v])==true) return false; a[v]=true; }return true; } bool isunique2(char s[]) { int a[8]; memset(a,0,sizeof(a)); int len=strlen(s); for(int i=0;i<len;i++) { int v=(int)s[i]; int n=v/32, shift=v%32; if(a[n]&(1<<shift)) return false; a[n] |=(1<<shift); //注意没有|是不对的 }return true; } void main() { char *s="i amstudent"; //两个空格也算是相同的字符 // gets(s); puts(s); bool sig1=isunique1(s); printf("%d\n",sig1); bool sig2=isunique2(s); printf("%d\n",sig2); int a[2]={0}; }
判断字符串中是否有重复字符
最新推荐文章于 2021-12-21 15:18:05 发布
本文介绍两种不使用额外数据结构的方法来检查字符串中是否有重复字符。第一种方法利用一个布尔数组,第二种方法利用位操作。通过初始化数组并遍历字符串,对比字符出现情况,以确定字符唯一性。
摘要由CSDN通过智能技术生成