]>
<< 1.21 スペースをTABで置き換える | main | 文字列のスライシング >>
問題の意味がわからない。『入力のn文字目までにある最後の非ブランク文字の後で"折りたたむ"』というのはどいういこっちゃ。
![]()
こんな感じになればいいんだろうか?
#include <stdio.h>
#define BUF_SIZE 1024
#define TURN_SIZE 10
int main(void){
char s[BUF_SIZE];
int i, j, len;
int last, space;
while (fgets(s,BUF_SIZE,stdin)){
last = space = 0;
for (i=0;i < strlen(s);i++){
if (s[i] == ' ') space++;
else {
if (last + space >= TURN_SIZE) {
putchar('\n');
last=0;
} else {
for (j = 0;j < space;j++){
putchar(' ');
}
last+=space;
}
space=0;
putchar(s[i]);
last++;
}
}
}
return 0;
}
def eraceSpace(line):
i=0
while line[i] == ' ' and i < len(line)-1:
i += 1
line = line[i:]
i = len(line)-1
while line[i] == ' ' and i >= 0:
i -= 1
line = line[:i]
return line
TURNSIZE=10
s=raw_input()
last = 0
space = 0
i = 0
for i in range(0,len(s),TURNSIZE):
line = s[i:i+TURNSIZE]
line = eraceSpace(line)
print line
最初からn文字ずつに区切っちゃえばいいんじゃね?と思ったけどぜんぜん違ったヽ(`Д´)ノ行の頭にくるたびに文字を数えなおさなきゃいけないんだなー。
def eraceSpace(line):
i = len(line)-1
while i >= 0 and line[i] == ' ':
i -= 1
line = line[:i+1]
return line
TURNSIZE = 10
s = raw_input()
start = 0
last = TURNSIZE
end = len(s)
while start < end:
line = s[start:last]
print eraceSpace(line)
start = last
while start < end and s[start] == ' ':
start +=1
last = start + TURNSIZEこんな感じ?
http://www.panopticon.jp/mt/mt-tb.cgi/23
コメントする