Java實現以字串某一位置為界,將它之前的部分與之後的部分互換位置
阿新 • • 發佈:2019-01-25
需求:給定一個字串str和一個整數i,i代表字串中某一個元素的下標,將str[0..i-1]移到這個元素的右側,將str[i+1..len(str)-1]移到這個元素的左側。(要求:時間複雜度為O(N),空間複雜度為O(1))。
實現思路:以分割數為界,分為左側和右側,分別將左側和右側的字串進行反轉,然後將左側和右側分別看成一個整體,將左側和右側進行反轉。
測試用例樣例:
輸入:”abcde”, 2
預期結果: decab
下面是Java程式碼的實現:
public class TestReverse { public static void main(String[] args) { String str = "abcde"; System.out.println(replaceBeginAndEnd(str, 2)); } public static String replaceBeginAndEnd(String str, int i) { if (str == null || i < 0 || str.length() <= i) { return str; } char[] chars = str.toCharArray(); reverseCharArray(chars, 0, i - 1); reverseCharArray(chars,i + 1, chars.length - 1); reverseCharArray(chars, 0, chars.length - 1); return new String(chars); } private static void reverseCharArray(char[] chars, int begin, int end) { char temp; while (begin < end) { temp = chars[begin]; chars[begin] = chars[end]; chars[end] = temp;begin++; end--; } } }
輸出結果為: