LC

 Một xâu có đội dài lớn hơn 1 chỉ gồm các chữ cái La tinh in thường được gọi là số đối xứng nếu ta đọc xâu đó từ trái sang phải và từ phải sang trái là như nhau. Một xâu được gọi là siêu đối xứng, nếu nó là xâu đối xứng hoặc được tạo thành bằng cách ghép  liên tiếp từ nhiều xâu đối xứng.
Yêu cầu: Cho một xâu S, hãy đếm số xâu con siêu đối xứng của S ( Xâu con của một xâu S là một đoạn liên tiếp các kí tự của S)
Dữ liệu vào: Nhập xâu S từ bàn phím
Dữ liệu ra: Xuất ra màn hình số xâu con tìm được


Nhập S=aabbccdd
Xuất ra: 10 ( Các xâu siêu đối xứng là: aa, bb, cc, dd, aabb, bbcc, ccdd, aabbcc, bbccdd, aabbccdd )

làm bằng pascal nha. mình cảm ơn!

 

PG
30 tháng 6 2023 lúc 20:10

program superSymmetricalSubstring;

var

      s: string;

function isSymmetrical(str: string): boolean;

var

      i, len: integer;

begin

      len := length(str);

      for i := 1 to len div 2 do

      begin

            if str[i] <> str[len - i + 1] then

            begin

                  exit(false);

            end;

      end;

      exit(true);

end;

function countSuperSymmetricalSubstrings(s: string): integer;

var

      i, j, len, count: integer;

begin

      len := length(s);

      count := 0;

      for i := 1 to len do

      begin

            for j := 2 to len - i + 1 do

            begin

                  if isSymmetrical(copy(s, i, j)) then

                  begin

                        count := count + 1;

                  end;

            end;

      end;

      count := count + len;

      exit(count);

end;

begin

      write('Nhap xau S: ');

      readln(s);

      writeln('So xau con sieu doi xung cua S: ', countSuperSymmetricalSubstrings(s));

      readln;

end.

Bình luận (1)

Các câu hỏi tương tự
H24
Xem chi tiết
LC
Xem chi tiết
NT
Xem chi tiết
LQ
Xem chi tiết
NH
Xem chi tiết
HD
Xem chi tiết
TA
Xem chi tiết
H24
Xem chi tiết
H24
Xem chi tiết