電子書籍の厳選無料作品が豊富!

R L を入力して左右のR、Lが同数であるとバランスが取れた文字列とし、その数を計算したい。

input
RLRRLLRLRL

output
4

"RL" "RRLL" "RL" "RL"

input
RLLLLLRRRRLR

output
3

"RL" "LLLLRRRR" "LR"

A 回答 (3件)

カウンタ=0


 Rが来たら+1
 Lが来たらー1
 カウンタが0ならLR同数なので、バランスが取れた文字列として登録
文字列が終わったなら、登録された文字列とその数を出力
    • good
    • 2

確かめてないですが、私の回答だと例で示してくれたような、入力がきれいな場合しかうまく動かないと思いますので悪しからず。


’RLLLR’とか’RRL’とか入力したらうまくカウントできない気がします。
    • good
    • 0

下手ですけど、こんな感じでどうでしょうか。



#include <stdio.h>

int count(char *s){
int rcnt, lcnt, cnt;
cnt=lcnt=0;
while (*s) {
rcnt=0;
while (*s == 'R'){
rcnt++;
s++;
if (rcnt==lcnt){
cnt++;
rcnt=0;
while (*s=='R'){
rcnt++;
s++;
}
break;
}
}
lcnt=0;
while (*s == 'L'){
lcnt++;
s++;
if (rcnt==lcnt){
cnt++;
lcnt=0;
while(*s=='L'){
lcnt++;
s++;
}
break;
}
}
}
return cnt;
}

int main()
{
printf("%d¥n", count("RLRRLLRLRL"));
printf("%d¥n", count("RLLLLLRRRRLR"));
return 0;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!