プログラミングのお題スレ Part3
■ このスレッドは過去ログ倉庫に格納されています
0489デフォルトの名無しさん
2014/04/13(日) 20:06:39.69ID:Ucj0IS4sなんで二重ループにするのはなぜなんだぜ
// C
#include <stdio.h>
#define ___ /*empty*/
char majorChar(const char* p) {
___ if (*p) {
___ ___ char cx = *p; // 先頭の文字は「一方の文字」で確定
___ ___ char cy = '\0'; // もう一方の文字(未定)
___ ___ int nx = 1;
___ ___ int ny = 0;
___ ___
___ ___ while (*++p) {
___ ___ ___ if (*p == cx) {
___ ___ ___ ___ ++nx;
___ ___ ___ }else{ ___ // 三種類以上は無いって信じてるぜ...
___ ___ ___ ___ if (!cy) cy = *p; // 毎回上書きのほうが効率いいかな??
___ ___ ___ ___ ++ny;
___ ___ ___ }
___ ___ }
___ ___ return (nx >= ny) ? cx : cy; // 偶数文字で同じ数だったら先頭の文字を返すぜ
___ }else{
___ ___ return '\0';
___ }
}
void main(void) {
___ char* given = "aabaabbab";
___ printf("%s -> %c\n", given, majorChar(given));
}
■ このスレッドは過去ログ倉庫に格納されています