C++ Builder XE4 > String > 공통 Postfix 문자열 가져오기 > getCommonPostfixString()

운영 환경
C++ Builder XE4

처리 개요


  • 1배속, 2배속
  • >> "배속"을 돌려준다

  • 30 어린이, 25 어린이
  • >> "소인"을 돌려준다

  • 1024 바이트, 20MB
  • >> "바이트"를 돌려준다


  • code



    Unit1.cpp
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    static String getCommonPostfixString(String strA, String strB)
    {
        for (int idx=0; idx < strA.Length(); idx++) {
            String wrkStr = strA.SubString(idx, MAXINT); // MAXINT: 最後まで
            if (strB.Pos(wrkStr) > 0) {
                return wrkStr;
            }
        }
    
        return L"";
    }
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        ShowMessage( getCommonPostfixString(L"1 倍速", L"2 倍速") );
    
        ShowMessage( getCommonPostfixString(L"30 小人", L"25 小人") );
    
        ShowMessage( getCommonPostfixString(L"1024 バイト", L"20M バイト") );
    }
    //---------------------------------------------------------------------------
    

    실행 예









    용도



    TComboBox의 Items로 정의한 문자열 중, 단위만을 제거하고 싶다.

    단위는 getCommonPostfixString()로 취득한다.

    이러한 소프트 구현으로 해 두면, 폼상의 디자인(TComboBox의 Items의 정의)을 변경한 후에도 소프트가 망가지지 않는다.

    디자인의 변경과 코드의 변경, 양쪽 모두를 실시하지 않으면 안되는 상황의 회피안.
    (수정 개소가 늘어나면 실패하고, 디버그 시간이 길어진다).

    성실한 구현 (공통 문자열 얻기)



    공통 문자열의 취득의 진지한 구현을 하면, 아래의 링크의 링크처에 있는 Delphi 코드를 C++ Builder용으로 다시 구현하면 좋을 것이다.
  • link > algorithm > string difference > Longest common subsequence (LCS) problem > Delphi 구현

  • 동기부여 7of9.

    좋은 웹페이지 즐겨찾기