Bạn chưa đăng nhập. Vui lòng đăng nhập để hỏi bài
Long ca ca

 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!

 

Phía sau một cô gái
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.


Các câu hỏi tương tự
hoanganh
Xem chi tiết
LA VAN CAU
Xem chi tiết
Nguyễn Thị Mỹ Tiền
Xem chi tiết
Lê Đình Quý
Xem chi tiết
Nguyễn Thị Hòa
Xem chi tiết
Hai Yen Duong
Xem chi tiết
thân lê tú anh
Xem chi tiết
feng
Xem chi tiết
spiderman
Xem chi tiết