Code xoá đoạn string nằm giữa kí tự 'h' đầu tiên và kí tự 'h' cuối cùng bị sai kết quả

Given a string in which the letter h occurs at least twice. Remove from that string the first and the last occurrence of the letter h, as well as all the characters between them.

var a:string;
var i,c,b:integer;
begin
    readln(a);    
    b:=100;
    c:=0;
    for i:= 0 to length(a) do
        if a[i]='h' then
            if b>i then
                b:=i;
    for i:= 0 to length(a) do
        if a[i]='h' then
            if c<i then
                c:=i;
    for i:= b to c do
        delete(a,i,i);
        
    writeln(a);
end.

Input (stdin)

In the hole in the ground there lived a hobbit

Your Output (stdout)

In tlhdib

Expected Output

In tobbit

Bài này hướng làm theo mình bạn nên tìm index kí tự ‘h’ đầu tiên và kí tự ‘h’ cuối cùng. Sau đó xóa 1 phát từ index ‘h’ đầu đến index ‘h’ cuối là xong

1 Like
var a:string;
var i,c,b:integer;
begin
    readln(a);    
    b:=100;
    c:=0;
    for i:= 0 to length(a) do
        if a[i]='h' then
            if b>i then
                b:=i;
    for i:= 0 to length(a) do
        if a[i]='h' then
            if c<i then
                c:=i;
    delete(a,b,c);
        
    writeln(a);
end.

ko dc

Cái b bạn duyệt từ 1 đến length(a) còn cái c thì bạn duyệt từ length(a) downto về 1.
Cứ thấy gặp ‘h’ thì bạn break ra. Còn lúc đầu ko cần gán b hay c làm gì nhé :slight_smile:
Tất nhiên là đề như vậy thì chắc chắn luôn có 2 kí tự ‘h’ trở lên.

1 Like

em cảm ơn anh ạ :grinning:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?