算法题——字符串
344.反转字符串
class Solution {public void reverseString(char[] s) {int left=0;int right=s.length-1;while(left<right){char temp = s[left];s[left] = s[right];s[right] = temp; left++;right--;}return;}
}
没什么好解释的,定义一个temp保存修改前的值即可
541.反转字符串II
class Solution {private String reverse(String s,int begin,int end){StringBuffer sb = new StringBuffer(s);int l=begin;int r=end-1;while(l<r){char temp = sb.charAt(l);sb.setCharAt(l,sb.charAt(r));sb.setCharAt(r,temp);l++;r--;}s=sb.toString();return s;}public String reverseStr(String s, int k) {int i=0;for(i=0;i+2*k<s.length();i+=2*k){s = reverse(s,i,i+k);}if(i+k>=s.length()){s = reverse(s,i,s.length());}else{s = reverse(s,i,i+k);}return s;}
}
StringBuffer的用法见7.13 Java SE(常用API P118-P126)-CSDN博客
这里循环时每次让i加2k而不是+1,根据情况反转对应位置的字符