LeetCode刷题EASY篇如何快速反转一个字符串

题目

Write a function that takes a string as input and returns the string reversed.

Example 1:

Input: "hello"
Output: "olleh"

Example 2:

Input: "A man, a plan, a canal: Panama"
Output: "amanaP :lanac a ,nalp a ,nam A"

 

我的尝试

上一篇文章中,反转一个整数,我的思路其实是用来解决字符串比较合适,因为不涉及负号和0等问题。用空间换时间,我的成功代码如下:

class Solution {
    public String reverseString(String string) {
        char[] chars = string.toCharArray();
        char[] charRes = new char[chars.length];
        for (int i = chars.length - 1; i >= 0; i--) {
            charRes[chars.length - i - 1] = chars[i];
        }
        return String.valueOf(charRes);
    }
}

优化方法

leetcode此题没有给出答案,不过看到一个伙伴的js代码,突然发现除了上面的空间换时间方法外,另外的一个方法:

倒序输出其实就是两个元素交换,指定两个指针,一个从头i,一个从尾j,当i

算法的三个武器:

  • 两个指针,同时遍历,移动处理问题
  • 对于连续的问题,利用滑动窗口,计算当前窗口的值,然后进行增加或者删除
  • 空间换时间解决问题,比如我的算法
class Solution {
    public String reverseString(String string) {
        char[] chars = string.toCharArray();
        int i = 0, j = chars.length - 1;
        char temp;
        while (i < j) {
            temp = chars[i];
            chars[i] = chars[j];
            chars[j] = temp;
            i++;
            j--;
        }
        return String.valueOf(chars);
    }
}

 

你可能感兴趣的:(架构设计,java常见知识,Leetcode算法)