一日一コード

joel on softwareの問題を11回にわたってやってみたわけだが、本来ならこのくらい30分程度でできなきゃいけないんだろうな。


まあ、そんなわけで、文字列の中で同じ文字が一番長く続くところを探す。

C言語


char *find_chars( char *str) //見つからない場合は文字列の一番最初のポインタを返す。
{
if(str == NULL) return NULL;

int cnt=0,max=0; char buf = NULL; char *ret=str; //比較用カウンタと戻り値用のポインタ。
do{
if( buf == *str ){ cnt++; }//同じ文字列が続く。
else{
if( cnt > max ) //新記録達成。
{
max = cnt; ret = str - cnt; //同じ文字の一番最初のポイント。
}
cnt=0;
}
buf = *str;
}while( *(str++) != '\0' );//最後の\0でも処理する。
return ret;
}

なんか最近適当だな。明日からのネタはどうしようか。

全コード