1. 程式人生 > >Java實現以字串某一位置為界,將它之前的部分與之後的部分互換位置

Java實現以字串某一位置為界,將它之前的部分與之後的部分互換位置

需求:給定一個字串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--; } } }

輸出結果為: