leetcode 344. 反转字符串

编写一个函数,其作用是将输入的字符串反转过来。

示例 1:

输入: "hello"
输出: "olleh"

示例 2:

输入: "A man, a plan, a canal: Panama"
输出: "amanaP :lanac a ,nalp a ,nam A"

思路一:由于昨天刚学到集合与框架中的 Collections 中可以将 ArrayList 的元素反转,所只需将字符串使用 toCharArray 的方法转换为字符数组,然后加入到 ArrayList 中,使用工具类反转,然后将再转换回来即可。

注意:字符数组转换成字符串可使用:

 

  1. new String(char[] a);
  2. String.valueOf(char[] a);
class Solution {
    public String reverseString(String s) {
        char[] a = s.toCharArray();
		List list = new ArrayList<>();
		for(char i:a) {
			list.add(i);
		}
		Collections.reverse(list);
		for(int i = 0;i < a.length;i++) {
			a[i] = list.get(i);
		}
		return String.valueOf(a);
    }
}

思路二:还是讲字符串转换为字符数组后,在原地置换,利用两个指针,一个从数组头开始自增,一个从数组为尾自减,知道两个相遇,利用交换两个代表的数组的元素,最后转换为字符串。

class Solution {
    public String reverseString(String s) {
       if(s == "") {
			return null;
		}
		char[] a = s.toCharArray();
		char temp;
		int l = 0,r = a.length-1;
		while(l < r) {
			temp = a[l];
			a[l] = a[r];
			a[r] = temp;
			l++;
			r--;
		}
		return new String(a);
    }
}

 思路三:利用额外的数组,进行保留交换。

class Solution {
    public String reverseString(String s) {
        char[] chars = s.toCharArray();
        char[] newString = new char[chars.length];
        for (int i = chars.length - 1, t = 0; i >= 0; i--, t++) {
            newString[t] = chars[i];
        }
        return new String(newString);
    }
}

 

你可能感兴趣的:(蓝桥杯-java,数据结构,java)