一、字符串反转

把一个句子中的打次进行反转,比如“how are you” ,变为 “you are how”

// 字符串反转
public class StringTest {

    // 字符反转的方法
    private void swap(char[] c, int front, int end) {

        if (front > end || end >= c.length) {
            return;
        }

        while (front < end) {

            char tmp = c[front];
            c[front] = c[end];
            c[end] = tmp;

            front++;
            end--;
        }
    }

    // O(n)
    public String swapStr(String str) {

        char[] cArr = str.toCharArray();

        // 整个字符串的字符反转
        swap(cArr, 0, cArr.length - 1); // 反转整个字符串中的所有字母,how are you -> uoy era woh

        int begin = 0;

        // 对字符串中的每个单词反转,除了最后一单词
        for (int i = 0; i < cArr.length; i++) {

            if (cArr[i] == ' ') {
                swap(cArr, begin, i - 1);
                begin = i + 1;
            }
        }

        // 最后一个单词的反转
        swap(cArr, begin, cArr.length - 1);

        return new String(cArr);
    }

    public static void main(String[] args) {

        String str = "how are you";
        System.out.println(new StringTest().swapStr(str));
    }

}
View Code

相关文章: