1. 程式人生 > >java資料結構之串的定義

java資料結構之串的定義

原始碼的github地址,可以下載到本地執行

串的介面定義

package Interface;


import impl.ArrayString;

/**
 * 串 是由零個或者多個字元組成的有限序列
 * 串中字元的數目n稱為串的長度   零個字元的串稱為空串 它的長度為零
 * 串中任意個連續字元字元組成的子序列稱為該串的子串  包含子串的串相應的稱為主串
 * 通常稱字元在序列中的序號為該字元在串中的位置  子串的位置則是以該子串的第一個字元在主串中的位置來表示 (ps:第一個字元的位置是1 不是零)
 * 兩個串相等的前提是 兩個串的長度相等 且對應位置的各個字元也都相等
 * 由一個或多個空格組成的串 也稱為空格串,不等於空串,長度為空格的數目
 *
 * 串的儲存結構與線性表相似,但是基本操作不同,串的基本操作是以串的整體作為操作物件,線性表是以單個元素作為操作物件
 * 例如 在串中查詢某個子串,求取某個子串,在串的某個位置插入一個子串 以及刪除一個子串等
 *
 * 以下操作中:
 * 串賦值,串比較,求串長,串連線,求子串 這五種操作是最小操作,其他的串操作可以用這五種組合成
 *
 *
 */
public interface IString {

    /**
     * 生成一個其值等於chars的串T
     * @param chars
     * @return
     */
    IString StrAssign(char[]  chars);

    /**
     * 將串的內容複製給target
     * @param
     * @return
     */
    IString StrCopy(IString target);

    /**
     * 若是串為空 則返回true 否則返回false
     * @return
     */
    Boolean StrEmpty();

    /**
     * 如果本字串比target大,則返回大於0 若是相等 返回0  若是不等 則返回-1
     * @param target
     * @return
     */
    int StrCompare(IString target);

    /**
     * 返回串的長度 即元素個數
     * @return
     */
    int StrLength();

    /**
     * 將串清空為空串
     */
    Boolean ClearString();

    /**
     * 連線為新串,並返回新串
     */
    IString Concat(IString s2);

    /**
     * 返回串的第post個字元起,長度為len的子串
     */
    IString SubString(int pos,int len);

    /**
     * 若主串中存在和串T值相同的子串,則返回它在主串中第pos個位置之後的第一次出現的位置,否則返回0
     *
     * @param T 子串
     * @param pos 指定位置
     * @return
     */
    int index(IString T,int pos);

    /**
     * 用V替換所有在主串中出現的所有與T相等的不重疊的子串
     * @param T
     * @return
     */
    IString Replace(IString T,IString V);

    /**
     * 在主串的第pos個字元之前插入串T
     * @param T
     * @param pos
     * @return
     */
    IString StrInsert(IString T,int pos);

    /**
     * 從主串中刪除第pos個字元起長度為len的子串
     * @param pos
     * @param len
     * @return
     */
    IString StrDelete(int pos,int len);

    /**
     * 銷燬
     */
    IString DestroyString();

    /**
     * 列印自己
     */
    void print();

    /**
     * 轉為陣列
     */
    char[] toArray();


}

原始碼的github地址,可以下載到本地執行