输出不重复的字符
2023-01-09阅读(908)
问:C语言 输入一个字符串 去掉重复的字符,输出无重复的
- 答:统计字符串中的重复字符,可以通过简单哈希算法来实现。
有效的字符的ascii值在0-127之间,定义一个128位的数组,初始化为0,用数组下标对应相应的字符,数组元素值表示字符出现的频率,统计相应字符的个数,个数大于1的字符就是重复的。
参考代码如下:
#include
void main()
{
char s[1024];
int carr[128]={0};
int i;
printf("input a string: ");
gets(s);
for( i=0;s[i];i++ )
{
int index=s[i];
if ( index >=0 && index <= 127 ) //安全处理,防止输入异常时,程序出错
carr[index]++ ;
}
for( i=0;i<128;i++ )
if ( carr[i] > 1 )
printf("%c:%d\n", i, carr[i] );
}运行结果:
input
a
string:
hello
world
l:3
o:2 - 答:统计字符串中的重复字符,可以通过简单哈希算法来实现。
有效的字符的ascii值在0-127之间,定义一个128位的数组,初始化为0,用数组下标对应相应的字符,数组元素值表示字符出现的频率,统计相应字符的个数,个数大于1的字符就是重复的。
参考代码如下:
#include
void main()
{
char s[1024];
int carr[128]={0};
int i;
printf("input a string: ");
gets(s);
for( i=0;s[i];i++ )
{
int index=s[i];
if ( index >=0 && index <= 127 ) //安全处理,防止输入异常时,程序出错
carr[index]++ ;
}
for( i=0;i<128;i++ )
if ( carr[i] > 1 )
printf("%c:%d\n", i, carr[i] );
}运行结果:
input
a
string:
hello
world
l:3
o:2
问:c#在控制台上输入若干个有重复的字符串,按顺序将不重复的字符串输出
- 答:实现思路,替换掉指定字符串为空后和原字符串长度进行对比,如果比原字符串小1个长度,那么说明没有重复,如果小了2个或2个以上长度,说明是重复的字符串,并以此为条件,控制输出不重复的字符串。
代码如下:
static void Main(string[] args){
string input = Console.ReadLine();
foreach (char item in input)
if (input.Replace(item.ToString(), "").Length == input.Length - 1)
Console.WriteLine(item);
}
//这应该是比较精简的写法了,望采纳! - 答:字符以输入相反的顺序输出
问:C语言 输入一个字符串 去掉重复的字符,输出无重复的
- 答:#include<stdio.h>
#include<string.h>
main()
{int i,a[127]={0};
char s[100];
printf("Enter a string:\n");
gets(s);
for(i=0;i<strlen(s);i++)
if(a[(int)s[i]]==0)
{a[(int)s[i]]=1; printf("%c",s[i]);}
printf("\n");
} - 答:#include<stdio.h>int main(){ char str[100]="";//输入字符串,自己设置长度 char out[100]=""; int letter[127]; int k=127,m=0; while(k--)letter[k]=-1; puts("input a string:"); gets(str); for(k=0;k<100;k++) letter[str[k]]++; for(k=0;k<100;k++) if(letter[str[k]]==0)out[m++]=str[k]; out[m]='\0'; puts(out); getchar(); return 0; }
想要排除重复,即留下只出现1次的,的,判断处if(letter[str[k]]==0)
若想留下出现N次的,判断处if(letter[str[k]]==N-1) 即可。