C语言代码解析:查找字符串中第一个不重复字符
这段代码实现了一个功能:从输入的字符串中找出第一个不重复的字符,并输出该字符。如果字符串中没有不重复的字符,则输出"NO"。
代码首先定义了一个字符数组a,并使用宏定义指定了数组的大小x为100010。然后使用gets函数从标准输入中读取字符串并存储在数组a中。
接下来使用两个for循环嵌套遍历字符串a。外层循环控制变量i用于遍历字符串中的每个字符,内层循环控制变量j用于与变量i不相等的字符进行比较。
如果找到了一个与字符a[i]相同且位置不同的字符a[j],则将变量count设为1,表示找到了重复字符,并跳出内层循环。
在外层循环中,如果count仍然为0,则表示a[i]是第一个不重复的字符,将其输出并使用break语句跳出外层循环。
如果外层循环结束时count为1,并且a[i+1]为字符串结束标志0,则表示字符串中所有字符都是重复的,输出"NO"。
最后返回0表示程序正常结束。
代码示例:
#include <stdio.h>
#define x 100010
char a[x];
int main()
{
gets(a);
int i,j;
int count=0;
for(i=0;a[i];++i){
for(j=0;a[j];++j){
if(a[i]==a[j]&&i!=j){
count=1;
break;
}
}
if(count==0){
printf("%c",a[i]);
break;
} else if(count==1&&a[i+1]==0) {
printf("NO");
}
count=0;
}
return 0;
}
解释:
#include <stdio.h>:包含标准输入输出库的头文件,提供了printf和gets等函数。#define x 100010:定义了一个宏x,值为100010。char a[x]:定义了一个字符数组a,大小为x,用于存储输入的字符串。gets(a):从标准输入中读取一行字符串并存储到数组a中。for(i=0;a[i];++i):外层循环,遍历字符串a中的每个字符。for(j=0;a[j];++j):内层循环,遍历字符串a中的每个字符,并与外层循环当前字符比较。if(a[i]==a[j]&&i!=j):判断当前字符是否与其他字符相同,且位置不同。count=1:如果找到重复字符,将count设为1。break:跳出内层循环。if(count==0):如果count仍然为0,表示当前字符是第一个不重复的字符。printf("%c",a[i]):输出第一个不重复的字符。break:跳出外层循环。else if(count==1&&a[i+1]==0):如果count为1,且当前字符为字符串结束标志,表示所有字符都是重复的。printf("NO"):输出"NO",表示字符串中没有不重复的字符。count=0:将count重置为0,以便下一轮循环判断。return 0:返回0,表示程序正常结束。
原文地址: https://www.cveoy.top/t/topic/pvKk 著作权归作者所有。请勿转载和采集!