1. 程式人生 > >資料結構與演算法(33)——字串習題

資料結構與演算法(33)——字串習題

題目:反轉字串

/**
 * 方法一:通過字元陣列反轉
 * @param string
 * @return
 */
public static String reversingString1(String string) {
    // 字串開始索引
    int start = 0;
    // 字串結束索引
    int end = string.length() - 1;
    // 將字串轉換成字元陣列
    char[] str = string.toCharArray();
    // 宣告臨時變數
    char temp;
    // 字元交換
    for (start = 0
; start <= end / 2; start++) { temp = str[start]; str[start] = str[end - start]; str[end - start] = temp; } // 生成字元創 return new String(str); }
/**
 * 方法二:字串反轉
 * @param string
 * @return
 */
public static String reversingString2(String string) {
    // 獲取字串長度
    int
length = string.length() - 1; StringBuilder sb = new StringBuilder(); for (int i = length; i >= 0; i--) { sb.append(string.charAt(i)); } return sb.toString(); }
/**
 * 方法三:使用XOR邏輯運算實現字串反轉
 * @param string
 * @return
 */
public static String reversingString3(String string) {
    // 字串開始索引
int start = 0; // 字串結束索引 int end = string.length() - 1; // 將字串轉換成字元陣列 char[] str = string.toCharArray(); while (start < end) { str[start] ^= str[end]; str[end] ^= str[start]; str[start] ^= str[end]; start++; end--; } return new String(str); }

題目:反轉給定句子中單詞
例如 輸入:”This is a Boy”, 輸出:”Boy a is This”

public static String reversingSentence(String string) {
    StringTokenizer st = new StringTokenizer(string);
    String result = "";
    while (st.hasMoreTokens()) {
        result = st.nextToken() + " " + result;
    }
    return result;
}

題目:刪除給定字串中相同的相鄰字元
例如:ABCCBCBA –> ABBCBA –> ACBA
思路:
檢查字串中是否存在相同的相鄰字元對。如果存在,則刪除字元對。然後檢查下一個和前一個字元。
持續該過程直到字串串首或串尾或找不到相同的相鄰字元對為止。

public static void removeAdjacentPairs(String string) {
    // 字串長度
    int length = string.length();
    // 將字串轉換成字元陣列
    char[] str = string.toCharArray();
    // 初始化索引變數
    int j = 0;
    for (int i = 1; i < length; i++) {
        // 刪除相同的相鄰字元對
        while ((str[i] == str[j]) && (j >= 0)) {
            i++;
            j--;
        }
        str[++j] = str[i];
    }
    // 輸出結果
    for (int i = 0; i <= j; i++) {
        System.out.print(str[i] + " ");
    }
}