一、使用StringBuilder實現
StringBuilder是Java提供的一個可變字符串類,可以實現對字符串的修改操作。用StringBuilder來實現去掉字符串中心的字符十分簡單和高效。
public static String removeCenterChar(String str) { StringBuilder sb = new StringBuilder(str); int len = sb.length(); if (len % 2 == 0) { // 偶數長度,刪除中間兩個字符 sb.deleteCharAt(len / 2 - 1); sb.deleteCharAt(len / 2 - 1); } else { // 奇數長度,刪除中間一個字符 sb.deleteCharAt(len / 2); } return sb.toString(); }
這段代碼首先用StringBuilder將輸入的字符串轉化為可變字符串,然後根據字符串長度的奇偶性進行分類討論,使用deleteCharAt方法刪除中心位置的字符。最後返回刪除中心字符後的字符串。
二、使用正則表達式實現
Java的String類提供了replaceAll方法可以替換所有匹配的子串,可以使用正則表達式匹配字符串中心的字符並將其替換為空字符串。
public static String removeCenterChar(String str) { int len = str.length(); if (len % 2 == 0) { // 偶數長度,刪除中間兩個字符 return str.replaceAll(str.substring(len / 2 - 1, len / 2 + 1), ""); } else { // 奇數長度,刪除中間一個字符 return str.replaceAll(str.substring(len / 2, len / 2 + 1), ""); } }
這段代碼首先根據字符串長度的奇偶性進行分類討論,使用replaceAll方法查找並替換中心字符為空字符串。返回刪除中心字符後的字符串。
三、手寫實現
手寫實現相當於暴力地按照字符串下標切割字符串,並將前半部分和後半部分拼接起來。與上述兩種方法相比,手寫實現複雜度較高,在字符串長度很大時,不建議使用。
public static String removeCenterChar(String str) { int len = str.length(); if (len % 2 == 0) { // 偶數長度,刪除中間兩個字符 return str.substring(0, len / 2 - 1) + str.substring(len / 2 + 1, len); } else { // 奇數長度,刪除中間一個字符 return str.substring(0, len / 2) + str.substring(len / 2 + 1, len); } }
四、應用場景
去掉字符串中心的字符一般用於處理一些步進算法中的特殊情況。在實際開發中,如分析DNA序列時,常常需要將序列的中心ATCG切斷,只分析兩邊的序列。
五、總結
本文介紹了Java中三種去掉字符串中心字符的方法,包括使用StringBuilder、使用正則表達式和手寫實現,對比了三種方法的優缺點,同時給出了應用場景。在使用時需要注意輸入字符串的邊界情況。
原創文章,作者:GPPL,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/134937.html